// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --include-generated-funcs
// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -target-cpu core2 -fopenmp -fopenmp-version=51 -x c -emit-llvm %s -o - | FileCheck %s
// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -emit-pch -o %t %s
// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s

// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -target-cpu core2 -fopenmp-simd -fopenmp-version=51 -x c -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -emit-pch -o %t %s
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY0 %s
// expected-no-diagnostics

#ifndef HEADER
#define HEADER

void foo(void) {
  char cx, ce, cd;
  unsigned char ucx, uce, ucd;
  short sx, se, sd;
  unsigned short usx, use, usd;
  int ix, ie, id;
  unsigned int uix, uie, uid;
  long lx, le, ld;
  unsigned long ulx, ule, uld;
  long long llx, lle, lld;
  unsigned long long ullx, ulle, ulld;
  float fx, fe, fd;
  double dx, de, dd;

#pragma omp atomic compare
  cx = cx > ce ? ce : cx;
#pragma omp atomic compare
  cx = cx < ce ? ce : cx;
#pragma omp atomic compare
  cx = ce > cx ? ce : cx;
#pragma omp atomic compare
  cx = ce < cx ? ce : cx;
#pragma omp atomic compare
  if (cx > ce)
    cx = ce;
#pragma omp atomic compare
  if (cx < ce)
    cx = ce;
#pragma omp atomic compare
  if (ce > cx)
    cx = ce;
#pragma omp atomic compare
  if (ce < cx)
    cx = ce;

#pragma omp atomic compare
  cx = cx == ce ? cd : cx;
#pragma omp atomic compare
  cx = ce == cx ? cd : cx;
#pragma omp atomic compare
  if (cx == ce)
    cx = cd;
#pragma omp atomic compare
  if (ce == cx)
    cx = cd;

#pragma omp atomic compare
  ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare
  ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare
  ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare
  ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare
  if (ucx > uce)
    ucx = uce;
#pragma omp atomic compare
  if (ucx < uce)
    ucx = uce;
#pragma omp atomic compare
  if (uce > ucx)
    ucx = uce;
#pragma omp atomic compare
  if (uce < ucx)
    ucx = uce;

#pragma omp atomic compare
  ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare
  ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare
  if (ucx == uce)
    ucx = ucd;
#pragma omp atomic compare
  if (uce == ucx)
    ucx = ucd;

#pragma omp atomic compare acq_rel
  cx = cx > ce ? ce : cx;
#pragma omp atomic compare acq_rel
  cx = cx < ce ? ce : cx;
#pragma omp atomic compare acq_rel
  cx = ce > cx ? ce : cx;
#pragma omp atomic compare acq_rel
  cx = ce < cx ? ce : cx;
#pragma omp atomic compare acq_rel
  if (cx > ce)
    cx = ce;
#pragma omp atomic compare acq_rel
  if (cx < ce)
    cx = ce;
#pragma omp atomic compare acq_rel
  if (ce > cx)
    cx = ce;
#pragma omp atomic compare acq_rel
  if (ce < cx)
    cx = ce;

#pragma omp atomic compare acq_rel
  cx = cx == ce ? cd : cx;
#pragma omp atomic compare acq_rel
  cx = ce == cx ? cd : cx;
#pragma omp atomic compare acq_rel
  if (cx == ce)
    cx = cd;
#pragma omp atomic compare acq_rel
  if (ce == cx)
    cx = cd;

#pragma omp atomic compare acq_rel
  ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare acq_rel
  ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare acq_rel
  ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare acq_rel
  ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare acq_rel
  if (ucx > uce)
    ucx = uce;
#pragma omp atomic compare acq_rel
  if (ucx < uce)
    ucx = uce;
#pragma omp atomic compare acq_rel
  if (uce > ucx)
    ucx = uce;
#pragma omp atomic compare acq_rel
  if (uce < ucx)
    ucx = uce;

#pragma omp atomic compare acq_rel
  ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare acq_rel
  ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare acq_rel
  if (ucx == uce)
    ucx = ucd;
#pragma omp atomic compare acq_rel
  if (uce == ucx)
    ucx = ucd;

#pragma omp atomic compare acquire
  cx = cx > ce ? ce : cx;
#pragma omp atomic compare acquire
  cx = cx < ce ? ce : cx;
#pragma omp atomic compare acquire
  cx = ce > cx ? ce : cx;
#pragma omp atomic compare acquire
  cx = ce < cx ? ce : cx;
#pragma omp atomic compare acquire
  if (cx > ce)
    cx = ce;
#pragma omp atomic compare acquire
  if (cx < ce)
    cx = ce;
#pragma omp atomic compare acquire
  if (ce > cx)
    cx = ce;
#pragma omp atomic compare acquire
  if (ce < cx)
    cx = ce;

#pragma omp atomic compare acquire
  cx = cx == ce ? cd : cx;
#pragma omp atomic compare acquire
  cx = ce == cx ? cd : cx;
#pragma omp atomic compare acquire
  if (cx == ce)
    cx = cd;
#pragma omp atomic compare acquire
  if (ce == cx)
    cx = cd;

#pragma omp atomic compare acquire
  ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare acquire
  ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare acquire
  ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare acquire
  ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare acquire
  if (ucx > uce)
    ucx = uce;
#pragma omp atomic compare acquire
  if (ucx < uce)
    ucx = uce;
#pragma omp atomic compare acquire
  if (uce > ucx)
    ucx = uce;
#pragma omp atomic compare acquire
  if (uce < ucx)
    ucx = uce;

#pragma omp atomic compare acquire
  ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare acquire
  ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare acquire
  if (ucx == uce)
    ucx = ucd;
#pragma omp atomic compare acquire
  if (uce == ucx)
    ucx = ucd;

#pragma omp atomic compare relaxed
  cx = cx > ce ? ce : cx;
#pragma omp atomic compare relaxed
  cx = cx < ce ? ce : cx;
#pragma omp atomic compare relaxed
  cx = ce > cx ? ce : cx;
#pragma omp atomic compare relaxed
  cx = ce < cx ? ce : cx;
#pragma omp atomic compare relaxed
  if (cx > ce)
    cx = ce;
#pragma omp atomic compare relaxed
  if (cx < ce)
    cx = ce;
#pragma omp atomic compare relaxed
  if (ce > cx)
    cx = ce;
#pragma omp atomic compare relaxed
  if (ce < cx)
    cx = ce;

#pragma omp atomic compare relaxed
  cx = cx == ce ? cd : cx;
#pragma omp atomic compare relaxed
  cx = ce == cx ? cd : cx;
#pragma omp atomic compare relaxed
  if (cx == ce)
    cx = cd;
#pragma omp atomic compare relaxed
  if (ce == cx)
    cx = cd;

#pragma omp atomic compare relaxed
  ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare relaxed
  ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare relaxed
  ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare relaxed
  ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare relaxed
  if (ucx > uce)
    ucx = uce;
#pragma omp atomic compare relaxed
  if (ucx < uce)
    ucx = uce;
#pragma omp atomic compare relaxed
  if (uce > ucx)
    ucx = uce;
#pragma omp atomic compare relaxed
  if (uce < ucx)
    ucx = uce;

#pragma omp atomic compare relaxed
  ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare relaxed
  ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare relaxed
  if (ucx == uce)
    ucx = ucd;
#pragma omp atomic compare relaxed
  if (uce == ucx)
    ucx = ucd;

#pragma omp atomic compare release
  cx = cx > ce ? ce : cx;
#pragma omp atomic compare release
  cx = cx < ce ? ce : cx;
#pragma omp atomic compare release
  cx = ce > cx ? ce : cx;
#pragma omp atomic compare release
  cx = ce < cx ? ce : cx;
#pragma omp atomic compare release
  if (cx > ce)
    cx = ce;
#pragma omp atomic compare release
  if (cx < ce)
    cx = ce;
#pragma omp atomic compare release
  if (ce > cx)
    cx = ce;
#pragma omp atomic compare release
  if (ce < cx)
    cx = ce;

#pragma omp atomic compare release
  cx = cx == ce ? cd : cx;
#pragma omp atomic compare release
  cx = ce == cx ? cd : cx;
#pragma omp atomic compare release
  if (cx == ce)
    cx = cd;
#pragma omp atomic compare release
  if (ce == cx)
    cx = cd;

#pragma omp atomic compare release
  ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare release
  ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare release
  ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare release
  ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare release
  if (ucx > uce)
    ucx = uce;
#pragma omp atomic compare release
  if (ucx < uce)
    ucx = uce;
#pragma omp atomic compare release
  if (uce > ucx)
    ucx = uce;
#pragma omp atomic compare release
  if (uce < ucx)
    ucx = uce;

#pragma omp atomic compare release
  ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare release
  ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare release
  if (ucx == uce)
    ucx = ucd;
#pragma omp atomic compare release
  if (uce == ucx)
    ucx = ucd;

#pragma omp atomic compare seq_cst
  cx = cx > ce ? ce : cx;
#pragma omp atomic compare seq_cst
  cx = cx < ce ? ce : cx;
#pragma omp atomic compare seq_cst
  cx = ce > cx ? ce : cx;
#pragma omp atomic compare seq_cst
  cx = ce < cx ? ce : cx;
#pragma omp atomic compare seq_cst
  if (cx > ce)
    cx = ce;
#pragma omp atomic compare seq_cst
  if (cx < ce)
    cx = ce;
#pragma omp atomic compare seq_cst
  if (ce > cx)
    cx = ce;
#pragma omp atomic compare seq_cst
  if (ce < cx)
    cx = ce;

#pragma omp atomic compare seq_cst
  cx = cx == ce ? cd : cx;
#pragma omp atomic compare seq_cst
  cx = ce == cx ? cd : cx;
#pragma omp atomic compare seq_cst
  if (cx == ce)
    cx = cd;
#pragma omp atomic compare seq_cst
  if (ce == cx)
    cx = cd;

#pragma omp atomic compare seq_cst
  ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare seq_cst
  ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare seq_cst
  ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare seq_cst
  ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare seq_cst
  if (ucx > uce)
    ucx = uce;
#pragma omp atomic compare seq_cst
  if (ucx < uce)
    ucx = uce;
#pragma omp atomic compare seq_cst
  if (uce > ucx)
    ucx = uce;
#pragma omp atomic compare seq_cst
  if (uce < ucx)
    ucx = uce;

#pragma omp atomic compare seq_cst
  ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare seq_cst
  ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare seq_cst
  if (ucx == uce)
    ucx = ucd;
#pragma omp atomic compare seq_cst
  if (uce == ucx)
    ucx = ucd;

#pragma omp atomic compare
  sx = sx > se ? se : sx;
#pragma omp atomic compare
  sx = sx < se ? se : sx;
#pragma omp atomic compare
  sx = se > sx ? se : sx;
#pragma omp atomic compare
  sx = se < sx ? se : sx;
#pragma omp atomic compare
  if (sx > se)
    sx = se;
#pragma omp atomic compare
  if (sx < se)
    sx = se;
#pragma omp atomic compare
  if (se > sx)
    sx = se;
#pragma omp atomic compare
  if (se < sx)
    sx = se;

#pragma omp atomic compare
  sx = sx == se ? sd : sx;
#pragma omp atomic compare
  sx = se == sx ? sd : sx;
#pragma omp atomic compare
  if (sx == se)
    sx = sd;
#pragma omp atomic compare
  if (se == sx)
    sx = sd;

#pragma omp atomic compare
  usx = usx > use ? use : usx;
#pragma omp atomic compare
  usx = usx < use ? use : usx;
#pragma omp atomic compare
  usx = use > usx ? use : usx;
#pragma omp atomic compare
  usx = use < usx ? use : usx;
#pragma omp atomic compare
  if (usx > use)
    usx = use;
#pragma omp atomic compare
  if (usx < use)
    usx = use;
#pragma omp atomic compare
  if (use > usx)
    usx = use;
#pragma omp atomic compare
  if (use < usx)
    usx = use;

#pragma omp atomic compare
  usx = usx == use ? usd : usx;
#pragma omp atomic compare
  usx = use == usx ? usd : usx;
#pragma omp atomic compare
  if (usx == use)
    usx = usd;
#pragma omp atomic compare
  if (use == usx)
    usx = usd;

#pragma omp atomic compare acq_rel
  sx = sx > se ? se : sx;
#pragma omp atomic compare acq_rel
  sx = sx < se ? se : sx;
#pragma omp atomic compare acq_rel
  sx = se > sx ? se : sx;
#pragma omp atomic compare acq_rel
  sx = se < sx ? se : sx;
#pragma omp atomic compare acq_rel
  if (sx > se)
    sx = se;
#pragma omp atomic compare acq_rel
  if (sx < se)
    sx = se;
#pragma omp atomic compare acq_rel
  if (se > sx)
    sx = se;
#pragma omp atomic compare acq_rel
  if (se < sx)
    sx = se;

#pragma omp atomic compare acq_rel
  sx = sx == se ? sd : sx;
#pragma omp atomic compare acq_rel
  sx = se == sx ? sd : sx;
#pragma omp atomic compare acq_rel
  if (sx == se)
    sx = sd;
#pragma omp atomic compare acq_rel
  if (se == sx)
    sx = sd;

#pragma omp atomic compare acq_rel
  usx = usx > use ? use : usx;
#pragma omp atomic compare acq_rel
  usx = usx < use ? use : usx;
#pragma omp atomic compare acq_rel
  usx = use > usx ? use : usx;
#pragma omp atomic compare acq_rel
  usx = use < usx ? use : usx;
#pragma omp atomic compare acq_rel
  if (usx > use)
    usx = use;
#pragma omp atomic compare acq_rel
  if (usx < use)
    usx = use;
#pragma omp atomic compare acq_rel
  if (use > usx)
    usx = use;
#pragma omp atomic compare acq_rel
  if (use < usx)
    usx = use;

#pragma omp atomic compare acq_rel
  usx = usx == use ? usd : usx;
#pragma omp atomic compare acq_rel
  usx = use == usx ? usd : usx;
#pragma omp atomic compare acq_rel
  if (usx == use)
    usx = usd;
#pragma omp atomic compare acq_rel
  if (use == usx)
    usx = usd;

#pragma omp atomic compare acquire
  sx = sx > se ? se : sx;
#pragma omp atomic compare acquire
  sx = sx < se ? se : sx;
#pragma omp atomic compare acquire
  sx = se > sx ? se : sx;
#pragma omp atomic compare acquire
  sx = se < sx ? se : sx;
#pragma omp atomic compare acquire
  if (sx > se)
    sx = se;
#pragma omp atomic compare acquire
  if (sx < se)
    sx = se;
#pragma omp atomic compare acquire
  if (se > sx)
    sx = se;
#pragma omp atomic compare acquire
  if (se < sx)
    sx = se;

#pragma omp atomic compare acquire
  sx = sx == se ? sd : sx;
#pragma omp atomic compare acquire
  sx = se == sx ? sd : sx;
#pragma omp atomic compare acquire
  if (sx == se)
    sx = sd;
#pragma omp atomic compare acquire
  if (se == sx)
    sx = sd;

#pragma omp atomic compare acquire
  usx = usx > use ? use : usx;
#pragma omp atomic compare acquire
  usx = usx < use ? use : usx;
#pragma omp atomic compare acquire
  usx = use > usx ? use : usx;
#pragma omp atomic compare acquire
  usx = use < usx ? use : usx;
#pragma omp atomic compare acquire
  if (usx > use)
    usx = use;
#pragma omp atomic compare acquire
  if (usx < use)
    usx = use;
#pragma omp atomic compare acquire
  if (use > usx)
    usx = use;
#pragma omp atomic compare acquire
  if (use < usx)
    usx = use;

#pragma omp atomic compare acquire
  usx = usx == use ? usd : usx;
#pragma omp atomic compare acquire
  usx = use == usx ? usd : usx;
#pragma omp atomic compare acquire
  if (usx == use)
    usx = usd;
#pragma omp atomic compare acquire
  if (use == usx)
    usx = usd;

#pragma omp atomic compare relaxed
  sx = sx > se ? se : sx;
#pragma omp atomic compare relaxed
  sx = sx < se ? se : sx;
#pragma omp atomic compare relaxed
  sx = se > sx ? se : sx;
#pragma omp atomic compare relaxed
  sx = se < sx ? se : sx;
#pragma omp atomic compare relaxed
  if (sx > se)
    sx = se;
#pragma omp atomic compare relaxed
  if (sx < se)
    sx = se;
#pragma omp atomic compare relaxed
  if (se > sx)
    sx = se;
#pragma omp atomic compare relaxed
  if (se < sx)
    sx = se;

#pragma omp atomic compare relaxed
  sx = sx == se ? sd : sx;
#pragma omp atomic compare relaxed
  sx = se == sx ? sd : sx;
#pragma omp atomic compare relaxed
  if (sx == se)
    sx = sd;
#pragma omp atomic compare relaxed
  if (se == sx)
    sx = sd;

#pragma omp atomic compare relaxed
  usx = usx > use ? use : usx;
#pragma omp atomic compare relaxed
  usx = usx < use ? use : usx;
#pragma omp atomic compare relaxed
  usx = use > usx ? use : usx;
#pragma omp atomic compare relaxed
  usx = use < usx ? use : usx;
#pragma omp atomic compare relaxed
  if (usx > use)
    usx = use;
#pragma omp atomic compare relaxed
  if (usx < use)
    usx = use;
#pragma omp atomic compare relaxed
  if (use > usx)
    usx = use;
#pragma omp atomic compare relaxed
  if (use < usx)
    usx = use;

#pragma omp atomic compare relaxed
  usx = usx == use ? usd : usx;
#pragma omp atomic compare relaxed
  usx = use == usx ? usd : usx;
#pragma omp atomic compare relaxed
  if (usx == use)
    usx = usd;
#pragma omp atomic compare relaxed
  if (use == usx)
    usx = usd;

#pragma omp atomic compare release
  sx = sx > se ? se : sx;
#pragma omp atomic compare release
  sx = sx < se ? se : sx;
#pragma omp atomic compare release
  sx = se > sx ? se : sx;
#pragma omp atomic compare release
  sx = se < sx ? se : sx;
#pragma omp atomic compare release
  if (sx > se)
    sx = se;
#pragma omp atomic compare release
  if (sx < se)
    sx = se;
#pragma omp atomic compare release
  if (se > sx)
    sx = se;
#pragma omp atomic compare release
  if (se < sx)
    sx = se;

#pragma omp atomic compare release
  sx = sx == se ? sd : sx;
#pragma omp atomic compare release
  sx = se == sx ? sd : sx;
#pragma omp atomic compare release
  if (sx == se)
    sx = sd;
#pragma omp atomic compare release
  if (se == sx)
    sx = sd;

#pragma omp atomic compare release
  usx = usx > use ? use : usx;
#pragma omp atomic compare release
  usx = usx < use ? use : usx;
#pragma omp atomic compare release
  usx = use > usx ? use : usx;
#pragma omp atomic compare release
  usx = use < usx ? use : usx;
#pragma omp atomic compare release
  if (usx > use)
    usx = use;
#pragma omp atomic compare release
  if (usx < use)
    usx = use;
#pragma omp atomic compare release
  if (use > usx)
    usx = use;
#pragma omp atomic compare release
  if (use < usx)
    usx = use;

#pragma omp atomic compare release
  usx = usx == use ? usd : usx;
#pragma omp atomic compare release
  usx = use == usx ? usd : usx;
#pragma omp atomic compare release
  if (usx == use)
    usx = usd;
#pragma omp atomic compare release
  if (use == usx)
    usx = usd;

#pragma omp atomic compare seq_cst
  sx = sx > se ? se : sx;
#pragma omp atomic compare seq_cst
  sx = sx < se ? se : sx;
#pragma omp atomic compare seq_cst
  sx = se > sx ? se : sx;
#pragma omp atomic compare seq_cst
  sx = se < sx ? se : sx;
#pragma omp atomic compare seq_cst
  if (sx > se)
    sx = se;
#pragma omp atomic compare seq_cst
  if (sx < se)
    sx = se;
#pragma omp atomic compare seq_cst
  if (se > sx)
    sx = se;
#pragma omp atomic compare seq_cst
  if (se < sx)
    sx = se;

#pragma omp atomic compare seq_cst
  sx = sx == se ? sd : sx;
#pragma omp atomic compare seq_cst
  sx = se == sx ? sd : sx;
#pragma omp atomic compare seq_cst
  if (sx == se)
    sx = sd;
#pragma omp atomic compare seq_cst
  if (se == sx)
    sx = sd;

#pragma omp atomic compare seq_cst
  usx = usx > use ? use : usx;
#pragma omp atomic compare seq_cst
  usx = usx < use ? use : usx;
#pragma omp atomic compare seq_cst
  usx = use > usx ? use : usx;
#pragma omp atomic compare seq_cst
  usx = use < usx ? use : usx;
#pragma omp atomic compare seq_cst
  if (usx > use)
    usx = use;
#pragma omp atomic compare seq_cst
  if (usx < use)
    usx = use;
#pragma omp atomic compare seq_cst
  if (use > usx)
    usx = use;
#pragma omp atomic compare seq_cst
  if (use < usx)
    usx = use;

#pragma omp atomic compare seq_cst
  usx = usx == use ? usd : usx;
#pragma omp atomic compare seq_cst
  usx = use == usx ? usd : usx;
#pragma omp atomic compare seq_cst
  if (usx == use)
    usx = usd;
#pragma omp atomic compare seq_cst
  if (use == usx)
    usx = usd;

#pragma omp atomic compare
  ix = ix > ie ? ie : ix;
#pragma omp atomic compare
  ix = ix < ie ? ie : ix;
#pragma omp atomic compare
  ix = ie > ix ? ie : ix;
#pragma omp atomic compare
  ix = ie < ix ? ie : ix;
#pragma omp atomic compare
  if (ix > ie)
    ix = ie;
#pragma omp atomic compare
  if (ix < ie)
    ix = ie;
#pragma omp atomic compare
  if (ie > ix)
    ix = ie;
#pragma omp atomic compare
  if (ie < ix)
    ix = ie;

#pragma omp atomic compare
  ix = ix == ie ? id : ix;
#pragma omp atomic compare
  ix = ie == ix ? id : ix;
#pragma omp atomic compare
  if (ix == ie)
    ix = id;
#pragma omp atomic compare
  if (ie == ix)
    ix = id;

#pragma omp atomic compare
  uix = uix > uie ? uie : uix;
#pragma omp atomic compare
  uix = uix < uie ? uie : uix;
#pragma omp atomic compare
  uix = uie > uix ? uie : uix;
#pragma omp atomic compare
  uix = uie < uix ? uie : uix;
#pragma omp atomic compare
  if (uix > uie)
    uix = uie;
#pragma omp atomic compare
  if (uix < uie)
    uix = uie;
#pragma omp atomic compare
  if (uie > uix)
    uix = uie;
#pragma omp atomic compare
  if (uie < uix)
    uix = uie;

#pragma omp atomic compare
  uix = uix == uie ? uid : uix;
#pragma omp atomic compare
  uix = uie == uix ? uid : uix;
#pragma omp atomic compare
  if (uix == uie)
    uix = uid;
#pragma omp atomic compare
  if (uie == uix)
    uix = uid;

#pragma omp atomic compare acq_rel
  ix = ix > ie ? ie : ix;
#pragma omp atomic compare acq_rel
  ix = ix < ie ? ie : ix;
#pragma omp atomic compare acq_rel
  ix = ie > ix ? ie : ix;
#pragma omp atomic compare acq_rel
  ix = ie < ix ? ie : ix;
#pragma omp atomic compare acq_rel
  if (ix > ie)
    ix = ie;
#pragma omp atomic compare acq_rel
  if (ix < ie)
    ix = ie;
#pragma omp atomic compare acq_rel
  if (ie > ix)
    ix = ie;
#pragma omp atomic compare acq_rel
  if (ie < ix)
    ix = ie;

#pragma omp atomic compare acq_rel
  ix = ix == ie ? id : ix;
#pragma omp atomic compare acq_rel
  ix = ie == ix ? id : ix;
#pragma omp atomic compare acq_rel
  if (ix == ie)
    ix = id;
#pragma omp atomic compare acq_rel
  if (ie == ix)
    ix = id;

#pragma omp atomic compare acq_rel
  uix = uix > uie ? uie : uix;
#pragma omp atomic compare acq_rel
  uix = uix < uie ? uie : uix;
#pragma omp atomic compare acq_rel
  uix = uie > uix ? uie : uix;
#pragma omp atomic compare acq_rel
  uix = uie < uix ? uie : uix;
#pragma omp atomic compare acq_rel
  if (uix > uie)
    uix = uie;
#pragma omp atomic compare acq_rel
  if (uix < uie)
    uix = uie;
#pragma omp atomic compare acq_rel
  if (uie > uix)
    uix = uie;
#pragma omp atomic compare acq_rel
  if (uie < uix)
    uix = uie;

#pragma omp atomic compare acq_rel
  uix = uix == uie ? uid : uix;
#pragma omp atomic compare acq_rel
  uix = uie == uix ? uid : uix;
#pragma omp atomic compare acq_rel
  if (uix == uie)
    uix = uid;
#pragma omp atomic compare acq_rel
  if (uie == uix)
    uix = uid;

#pragma omp atomic compare acquire
  ix = ix > ie ? ie : ix;
#pragma omp atomic compare acquire
  ix = ix < ie ? ie : ix;
#pragma omp atomic compare acquire
  ix = ie > ix ? ie : ix;
#pragma omp atomic compare acquire
  ix = ie < ix ? ie : ix;
#pragma omp atomic compare acquire
  if (ix > ie)
    ix = ie;
#pragma omp atomic compare acquire
  if (ix < ie)
    ix = ie;
#pragma omp atomic compare acquire
  if (ie > ix)
    ix = ie;
#pragma omp atomic compare acquire
  if (ie < ix)
    ix = ie;

#pragma omp atomic compare acquire
  ix = ix == ie ? id : ix;
#pragma omp atomic compare acquire
  ix = ie == ix ? id : ix;
#pragma omp atomic compare acquire
  if (ix == ie)
    ix = id;
#pragma omp atomic compare acquire
  if (ie == ix)
    ix = id;

#pragma omp atomic compare acquire
  uix = uix > uie ? uie : uix;
#pragma omp atomic compare acquire
  uix = uix < uie ? uie : uix;
#pragma omp atomic compare acquire
  uix = uie > uix ? uie : uix;
#pragma omp atomic compare acquire
  uix = uie < uix ? uie : uix;
#pragma omp atomic compare acquire
  if (uix > uie)
    uix = uie;
#pragma omp atomic compare acquire
  if (uix < uie)
    uix = uie;
#pragma omp atomic compare acquire
  if (uie > uix)
    uix = uie;
#pragma omp atomic compare acquire
  if (uie < uix)
    uix = uie;

#pragma omp atomic compare acquire
  uix = uix == uie ? uid : uix;
#pragma omp atomic compare acquire
  uix = uie == uix ? uid : uix;
#pragma omp atomic compare acquire
  if (uix == uie)
    uix = uid;
#pragma omp atomic compare acquire
  if (uie == uix)
    uix = uid;

#pragma omp atomic compare relaxed
  ix = ix > ie ? ie : ix;
#pragma omp atomic compare relaxed
  ix = ix < ie ? ie : ix;
#pragma omp atomic compare relaxed
  ix = ie > ix ? ie : ix;
#pragma omp atomic compare relaxed
  ix = ie < ix ? ie : ix;
#pragma omp atomic compare relaxed
  if (ix > ie)
    ix = ie;
#pragma omp atomic compare relaxed
  if (ix < ie)
    ix = ie;
#pragma omp atomic compare relaxed
  if (ie > ix)
    ix = ie;
#pragma omp atomic compare relaxed
  if (ie < ix)
    ix = ie;

#pragma omp atomic compare relaxed
  ix = ix == ie ? id : ix;
#pragma omp atomic compare relaxed
  ix = ie == ix ? id : ix;
#pragma omp atomic compare relaxed
  if (ix == ie)
    ix = id;
#pragma omp atomic compare relaxed
  if (ie == ix)
    ix = id;

#pragma omp atomic compare relaxed
  uix = uix > uie ? uie : uix;
#pragma omp atomic compare relaxed
  uix = uix < uie ? uie : uix;
#pragma omp atomic compare relaxed
  uix = uie > uix ? uie : uix;
#pragma omp atomic compare relaxed
  uix = uie < uix ? uie : uix;
#pragma omp atomic compare relaxed
  if (uix > uie)
    uix = uie;
#pragma omp atomic compare relaxed
  if (uix < uie)
    uix = uie;
#pragma omp atomic compare relaxed
  if (uie > uix)
    uix = uie;
#pragma omp atomic compare relaxed
  if (uie < uix)
    uix = uie;

#pragma omp atomic compare relaxed
  uix = uix == uie ? uid : uix;
#pragma omp atomic compare relaxed
  uix = uie == uix ? uid : uix;
#pragma omp atomic compare relaxed
  if (uix == uie)
    uix = uid;
#pragma omp atomic compare relaxed
  if (uie == uix)
    uix = uid;

#pragma omp atomic compare release
  ix = ix > ie ? ie : ix;
#pragma omp atomic compare release
  ix = ix < ie ? ie : ix;
#pragma omp atomic compare release
  ix = ie > ix ? ie : ix;
#pragma omp atomic compare release
  ix = ie < ix ? ie : ix;
#pragma omp atomic compare release
  if (ix > ie)
    ix = ie;
#pragma omp atomic compare release
  if (ix < ie)
    ix = ie;
#pragma omp atomic compare release
  if (ie > ix)
    ix = ie;
#pragma omp atomic compare release
  if (ie < ix)
    ix = ie;

#pragma omp atomic compare release
  ix = ix == ie ? id : ix;
#pragma omp atomic compare release
  ix = ie == ix ? id : ix;
#pragma omp atomic compare release
  if (ix == ie)
    ix = id;
#pragma omp atomic compare release
  if (ie == ix)
    ix = id;

#pragma omp atomic compare release
  uix = uix > uie ? uie : uix;
#pragma omp atomic compare release
  uix = uix < uie ? uie : uix;
#pragma omp atomic compare release
  uix = uie > uix ? uie : uix;
#pragma omp atomic compare release
  uix = uie < uix ? uie : uix;
#pragma omp atomic compare release
  if (uix > uie)
    uix = uie;
#pragma omp atomic compare release
  if (uix < uie)
    uix = uie;
#pragma omp atomic compare release
  if (uie > uix)
    uix = uie;
#pragma omp atomic compare release
  if (uie < uix)
    uix = uie;

#pragma omp atomic compare release
  uix = uix == uie ? uid : uix;
#pragma omp atomic compare release
  uix = uie == uix ? uid : uix;
#pragma omp atomic compare release
  if (uix == uie)
    uix = uid;
#pragma omp atomic compare release
  if (uie == uix)
    uix = uid;

#pragma omp atomic compare seq_cst
  ix = ix > ie ? ie : ix;
#pragma omp atomic compare seq_cst
  ix = ix < ie ? ie : ix;
#pragma omp atomic compare seq_cst
  ix = ie > ix ? ie : ix;
#pragma omp atomic compare seq_cst
  ix = ie < ix ? ie : ix;
#pragma omp atomic compare seq_cst
  if (ix > ie)
    ix = ie;
#pragma omp atomic compare seq_cst
  if (ix < ie)
    ix = ie;
#pragma omp atomic compare seq_cst
  if (ie > ix)
    ix = ie;
#pragma omp atomic compare seq_cst
  if (ie < ix)
    ix = ie;

#pragma omp atomic compare seq_cst
  ix = ix == ie ? id : ix;
#pragma omp atomic compare seq_cst
  ix = ie == ix ? id : ix;
#pragma omp atomic compare seq_cst
  if (ix == ie)
    ix = id;
#pragma omp atomic compare seq_cst
  if (ie == ix)
    ix = id;

#pragma omp atomic compare seq_cst
  uix = uix > uie ? uie : uix;
#pragma omp atomic compare seq_cst
  uix = uix < uie ? uie : uix;
#pragma omp atomic compare seq_cst
  uix = uie > uix ? uie : uix;
#pragma omp atomic compare seq_cst
  uix = uie < uix ? uie : uix;
#pragma omp atomic compare seq_cst
  if (uix > uie)
    uix = uie;
#pragma omp atomic compare seq_cst
  if (uix < uie)
    uix = uie;
#pragma omp atomic compare seq_cst
  if (uie > uix)
    uix = uie;
#pragma omp atomic compare seq_cst
  if (uie < uix)
    uix = uie;

#pragma omp atomic compare seq_cst
  uix = uix == uie ? uid : uix;
#pragma omp atomic compare seq_cst
  uix = uie == uix ? uid : uix;
#pragma omp atomic compare seq_cst
  if (uix == uie)
    uix = uid;
#pragma omp atomic compare seq_cst
  if (uie == uix)
    uix = uid;

#pragma omp atomic compare
  lx = lx > le ? le : lx;
#pragma omp atomic compare
  lx = lx < le ? le : lx;
#pragma omp atomic compare
  lx = le > lx ? le : lx;
#pragma omp atomic compare
  lx = le < lx ? le : lx;
#pragma omp atomic compare
  if (lx > le)
    lx = le;
#pragma omp atomic compare
  if (lx < le)
    lx = le;
#pragma omp atomic compare
  if (le > lx)
    lx = le;
#pragma omp atomic compare
  if (le < lx)
    lx = le;

#pragma omp atomic compare
  lx = lx == le ? ld : lx;
#pragma omp atomic compare
  lx = le == lx ? ld : lx;
#pragma omp atomic compare
  if (lx == le)
    lx = ld;
#pragma omp atomic compare
  if (le == lx)
    lx = ld;

#pragma omp atomic compare
  ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare
  ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare
  ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare
  ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare
  if (ulx > ule)
    ulx = ule;
#pragma omp atomic compare
  if (ulx < ule)
    ulx = ule;
#pragma omp atomic compare
  if (ule > ulx)
    ulx = ule;
#pragma omp atomic compare
  if (ule < ulx)
    ulx = ule;

#pragma omp atomic compare
  ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare
  ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare
  if (ulx == ule)
    ulx = uld;
#pragma omp atomic compare
  if (ule == ulx)
    ulx = uld;

#pragma omp atomic compare acq_rel
  lx = lx > le ? le : lx;
#pragma omp atomic compare acq_rel
  lx = lx < le ? le : lx;
#pragma omp atomic compare acq_rel
  lx = le > lx ? le : lx;
#pragma omp atomic compare acq_rel
  lx = le < lx ? le : lx;
#pragma omp atomic compare acq_rel
  if (lx > le)
    lx = le;
#pragma omp atomic compare acq_rel
  if (lx < le)
    lx = le;
#pragma omp atomic compare acq_rel
  if (le > lx)
    lx = le;
#pragma omp atomic compare acq_rel
  if (le < lx)
    lx = le;

#pragma omp atomic compare acq_rel
  lx = lx == le ? ld : lx;
#pragma omp atomic compare acq_rel
  lx = le == lx ? ld : lx;
#pragma omp atomic compare acq_rel
  if (lx == le)
    lx = ld;
#pragma omp atomic compare acq_rel
  if (le == lx)
    lx = ld;

#pragma omp atomic compare acq_rel
  ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare acq_rel
  ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare acq_rel
  ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare acq_rel
  ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare acq_rel
  if (ulx > ule)
    ulx = ule;
#pragma omp atomic compare acq_rel
  if (ulx < ule)
    ulx = ule;
#pragma omp atomic compare acq_rel
  if (ule > ulx)
    ulx = ule;
#pragma omp atomic compare acq_rel
  if (ule < ulx)
    ulx = ule;

#pragma omp atomic compare acq_rel
  ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare acq_rel
  ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare acq_rel
  if (ulx == ule)
    ulx = uld;
#pragma omp atomic compare acq_rel
  if (ule == ulx)
    ulx = uld;

#pragma omp atomic compare acquire
  lx = lx > le ? le : lx;
#pragma omp atomic compare acquire
  lx = lx < le ? le : lx;
#pragma omp atomic compare acquire
  lx = le > lx ? le : lx;
#pragma omp atomic compare acquire
  lx = le < lx ? le : lx;
#pragma omp atomic compare acquire
  if (lx > le)
    lx = le;
#pragma omp atomic compare acquire
  if (lx < le)
    lx = le;
#pragma omp atomic compare acquire
  if (le > lx)
    lx = le;
#pragma omp atomic compare acquire
  if (le < lx)
    lx = le;

#pragma omp atomic compare acquire
  lx = lx == le ? ld : lx;
#pragma omp atomic compare acquire
  lx = le == lx ? ld : lx;
#pragma omp atomic compare acquire
  if (lx == le)
    lx = ld;
#pragma omp atomic compare acquire
  if (le == lx)
    lx = ld;

#pragma omp atomic compare acquire
  ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare acquire
  ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare acquire
  ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare acquire
  ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare acquire
  if (ulx > ule)
    ulx = ule;
#pragma omp atomic compare acquire
  if (ulx < ule)
    ulx = ule;
#pragma omp atomic compare acquire
  if (ule > ulx)
    ulx = ule;
#pragma omp atomic compare acquire
  if (ule < ulx)
    ulx = ule;

#pragma omp atomic compare acquire
  ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare acquire
  ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare acquire
  if (ulx == ule)
    ulx = uld;
#pragma omp atomic compare acquire
  if (ule == ulx)
    ulx = uld;

#pragma omp atomic compare relaxed
  lx = lx > le ? le : lx;
#pragma omp atomic compare relaxed
  lx = lx < le ? le : lx;
#pragma omp atomic compare relaxed
  lx = le > lx ? le : lx;
#pragma omp atomic compare relaxed
  lx = le < lx ? le : lx;
#pragma omp atomic compare relaxed
  if (lx > le)
    lx = le;
#pragma omp atomic compare relaxed
  if (lx < le)
    lx = le;
#pragma omp atomic compare relaxed
  if (le > lx)
    lx = le;
#pragma omp atomic compare relaxed
  if (le < lx)
    lx = le;

#pragma omp atomic compare relaxed
  lx = lx == le ? ld : lx;
#pragma omp atomic compare relaxed
  lx = le == lx ? ld : lx;
#pragma omp atomic compare relaxed
  if (lx == le)
    lx = ld;
#pragma omp atomic compare relaxed
  if (le == lx)
    lx = ld;

#pragma omp atomic compare relaxed
  ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare relaxed
  ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare relaxed
  ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare relaxed
  ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare relaxed
  if (ulx > ule)
    ulx = ule;
#pragma omp atomic compare relaxed
  if (ulx < ule)
    ulx = ule;
#pragma omp atomic compare relaxed
  if (ule > ulx)
    ulx = ule;
#pragma omp atomic compare relaxed
  if (ule < ulx)
    ulx = ule;

#pragma omp atomic compare relaxed
  ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare relaxed
  ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare relaxed
  if (ulx == ule)
    ulx = uld;
#pragma omp atomic compare relaxed
  if (ule == ulx)
    ulx = uld;

#pragma omp atomic compare release
  lx = lx > le ? le : lx;
#pragma omp atomic compare release
  lx = lx < le ? le : lx;
#pragma omp atomic compare release
  lx = le > lx ? le : lx;
#pragma omp atomic compare release
  lx = le < lx ? le : lx;
#pragma omp atomic compare release
  if (lx > le)
    lx = le;
#pragma omp atomic compare release
  if (lx < le)
    lx = le;
#pragma omp atomic compare release
  if (le > lx)
    lx = le;
#pragma omp atomic compare release
  if (le < lx)
    lx = le;

#pragma omp atomic compare release
  lx = lx == le ? ld : lx;
#pragma omp atomic compare release
  lx = le == lx ? ld : lx;
#pragma omp atomic compare release
  if (lx == le)
    lx = ld;
#pragma omp atomic compare release
  if (le == lx)
    lx = ld;

#pragma omp atomic compare release
  ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare release
  ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare release
  ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare release
  ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare release
  if (ulx > ule)
    ulx = ule;
#pragma omp atomic compare release
  if (ulx < ule)
    ulx = ule;
#pragma omp atomic compare release
  if (ule > ulx)
    ulx = ule;
#pragma omp atomic compare release
  if (ule < ulx)
    ulx = ule;

#pragma omp atomic compare release
  ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare release
  ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare release
  if (ulx == ule)
    ulx = uld;
#pragma omp atomic compare release
  if (ule == ulx)
    ulx = uld;

#pragma omp atomic compare seq_cst
  lx = lx > le ? le : lx;
#pragma omp atomic compare seq_cst
  lx = lx < le ? le : lx;
#pragma omp atomic compare seq_cst
  lx = le > lx ? le : lx;
#pragma omp atomic compare seq_cst
  lx = le < lx ? le : lx;
#pragma omp atomic compare seq_cst
  if (lx > le)
    lx = le;
#pragma omp atomic compare seq_cst
  if (lx < le)
    lx = le;
#pragma omp atomic compare seq_cst
  if (le > lx)
    lx = le;
#pragma omp atomic compare seq_cst
  if (le < lx)
    lx = le;

#pragma omp atomic compare seq_cst
  lx = lx == le ? ld : lx;
#pragma omp atomic compare seq_cst
  lx = le == lx ? ld : lx;
#pragma omp atomic compare seq_cst
  if (lx == le)
    lx = ld;
#pragma omp atomic compare seq_cst
  if (le == lx)
    lx = ld;

#pragma omp atomic compare seq_cst
  ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare seq_cst
  ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare seq_cst
  ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare seq_cst
  ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare seq_cst
  if (ulx > ule)
    ulx = ule;
#pragma omp atomic compare seq_cst
  if (ulx < ule)
    ulx = ule;
#pragma omp atomic compare seq_cst
  if (ule > ulx)
    ulx = ule;
#pragma omp atomic compare seq_cst
  if (ule < ulx)
    ulx = ule;

#pragma omp atomic compare seq_cst
  ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare seq_cst
  ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare seq_cst
  if (ulx == ule)
    ulx = uld;
#pragma omp atomic compare seq_cst
  if (ule == ulx)
    ulx = uld;

#pragma omp atomic compare
  llx = llx > lle ? lle : llx;
#pragma omp atomic compare
  llx = llx < lle ? lle : llx;
#pragma omp atomic compare
  llx = lle > llx ? lle : llx;
#pragma omp atomic compare
  llx = lle < llx ? lle : llx;
#pragma omp atomic compare
  if (llx > lle)
    llx = lle;
#pragma omp atomic compare
  if (llx < lle)
    llx = lle;
#pragma omp atomic compare
  if (lle > llx)
    llx = lle;
#pragma omp atomic compare
  if (lle < llx)
    llx = lle;

#pragma omp atomic compare
  llx = llx == lle ? lld : llx;
#pragma omp atomic compare
  llx = lle == llx ? lld : llx;
#pragma omp atomic compare
  if (llx == lle)
    llx = lld;
#pragma omp atomic compare
  if (lle == llx)
    llx = lld;

#pragma omp atomic compare
  ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare
  ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare
  ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare
  ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare
  if (ullx > ulle)
    ullx = ulle;
#pragma omp atomic compare
  if (ullx < ulle)
    ullx = ulle;
#pragma omp atomic compare
  if (ulle > ullx)
    ullx = ulle;
#pragma omp atomic compare
  if (ulle < ullx)
    ullx = ulle;

#pragma omp atomic compare
  ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare
  ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare
  if (ullx == ulle)
    ullx = ulld;
#pragma omp atomic compare
  if (ulle == ullx)
    ullx = ulld;

#pragma omp atomic compare acq_rel
  llx = llx > lle ? lle : llx;
#pragma omp atomic compare acq_rel
  llx = llx < lle ? lle : llx;
#pragma omp atomic compare acq_rel
  llx = lle > llx ? lle : llx;
#pragma omp atomic compare acq_rel
  llx = lle < llx ? lle : llx;
#pragma omp atomic compare acq_rel
  if (llx > lle)
    llx = lle;
#pragma omp atomic compare acq_rel
  if (llx < lle)
    llx = lle;
#pragma omp atomic compare acq_rel
  if (lle > llx)
    llx = lle;
#pragma omp atomic compare acq_rel
  if (lle < llx)
    llx = lle;

#pragma omp atomic compare acq_rel
  llx = llx == lle ? lld : llx;
#pragma omp atomic compare acq_rel
  llx = lle == llx ? lld : llx;
#pragma omp atomic compare acq_rel
  if (llx == lle)
    llx = lld;
#pragma omp atomic compare acq_rel
  if (lle == llx)
    llx = lld;

#pragma omp atomic compare acq_rel
  ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare acq_rel
  ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare acq_rel
  ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare acq_rel
  ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare acq_rel
  if (ullx > ulle)
    ullx = ulle;
#pragma omp atomic compare acq_rel
  if (ullx < ulle)
    ullx = ulle;
#pragma omp atomic compare acq_rel
  if (ulle > ullx)
    ullx = ulle;
#pragma omp atomic compare acq_rel
  if (ulle < ullx)
    ullx = ulle;

#pragma omp atomic compare acq_rel
  ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare acq_rel
  ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare acq_rel
  if (ullx == ulle)
    ullx = ulld;
#pragma omp atomic compare acq_rel
  if (ulle == ullx)
    ullx = ulld;

#pragma omp atomic compare acquire
  llx = llx > lle ? lle : llx;
#pragma omp atomic compare acquire
  llx = llx < lle ? lle : llx;
#pragma omp atomic compare acquire
  llx = lle > llx ? lle : llx;
#pragma omp atomic compare acquire
  llx = lle < llx ? lle : llx;
#pragma omp atomic compare acquire
  if (llx > lle)
    llx = lle;
#pragma omp atomic compare acquire
  if (llx < lle)
    llx = lle;
#pragma omp atomic compare acquire
  if (lle > llx)
    llx = lle;
#pragma omp atomic compare acquire
  if (lle < llx)
    llx = lle;

#pragma omp atomic compare acquire
  llx = llx == lle ? lld : llx;
#pragma omp atomic compare acquire
  llx = lle == llx ? lld : llx;
#pragma omp atomic compare acquire
  if (llx == lle)
    llx = lld;
#pragma omp atomic compare acquire
  if (lle == llx)
    llx = lld;

#pragma omp atomic compare acquire
  ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare acquire
  ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare acquire
  ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare acquire
  ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare acquire
  if (ullx > ulle)
    ullx = ulle;
#pragma omp atomic compare acquire
  if (ullx < ulle)
    ullx = ulle;
#pragma omp atomic compare acquire
  if (ulle > ullx)
    ullx = ulle;
#pragma omp atomic compare acquire
  if (ulle < ullx)
    ullx = ulle;

#pragma omp atomic compare acquire
  ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare acquire
  ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare acquire
  if (ullx == ulle)
    ullx = ulld;
#pragma omp atomic compare acquire
  if (ulle == ullx)
    ullx = ulld;

#pragma omp atomic compare relaxed
  llx = llx > lle ? lle : llx;
#pragma omp atomic compare relaxed
  llx = llx < lle ? lle : llx;
#pragma omp atomic compare relaxed
  llx = lle > llx ? lle : llx;
#pragma omp atomic compare relaxed
  llx = lle < llx ? lle : llx;
#pragma omp atomic compare relaxed
  if (llx > lle)
    llx = lle;
#pragma omp atomic compare relaxed
  if (llx < lle)
    llx = lle;
#pragma omp atomic compare relaxed
  if (lle > llx)
    llx = lle;
#pragma omp atomic compare relaxed
  if (lle < llx)
    llx = lle;

#pragma omp atomic compare relaxed
  llx = llx == lle ? lld : llx;
#pragma omp atomic compare relaxed
  llx = lle == llx ? lld : llx;
#pragma omp atomic compare relaxed
  if (llx == lle)
    llx = lld;
#pragma omp atomic compare relaxed
  if (lle == llx)
    llx = lld;

#pragma omp atomic compare relaxed
  ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare relaxed
  ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare relaxed
  ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare relaxed
  ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare relaxed
  if (ullx > ulle)
    ullx = ulle;
#pragma omp atomic compare relaxed
  if (ullx < ulle)
    ullx = ulle;
#pragma omp atomic compare relaxed
  if (ulle > ullx)
    ullx = ulle;
#pragma omp atomic compare relaxed
  if (ulle < ullx)
    ullx = ulle;

#pragma omp atomic compare relaxed
  ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare relaxed
  ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare relaxed
  if (ullx == ulle)
    ullx = ulld;
#pragma omp atomic compare relaxed
  if (ulle == ullx)
    ullx = ulld;

#pragma omp atomic compare release
  llx = llx > lle ? lle : llx;
#pragma omp atomic compare release
  llx = llx < lle ? lle : llx;
#pragma omp atomic compare release
  llx = lle > llx ? lle : llx;
#pragma omp atomic compare release
  llx = lle < llx ? lle : llx;
#pragma omp atomic compare release
  if (llx > lle)
    llx = lle;
#pragma omp atomic compare release
  if (llx < lle)
    llx = lle;
#pragma omp atomic compare release
  if (lle > llx)
    llx = lle;
#pragma omp atomic compare release
  if (lle < llx)
    llx = lle;

#pragma omp atomic compare release
  llx = llx == lle ? lld : llx;
#pragma omp atomic compare release
  llx = lle == llx ? lld : llx;
#pragma omp atomic compare release
  if (llx == lle)
    llx = lld;
#pragma omp atomic compare release
  if (lle == llx)
    llx = lld;

#pragma omp atomic compare release
  ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare release
  ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare release
  ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare release
  ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare release
  if (ullx > ulle)
    ullx = ulle;
#pragma omp atomic compare release
  if (ullx < ulle)
    ullx = ulle;
#pragma omp atomic compare release
  if (ulle > ullx)
    ullx = ulle;
#pragma omp atomic compare release
  if (ulle < ullx)
    ullx = ulle;

#pragma omp atomic compare release
  ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare release
  ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare release
  if (ullx == ulle)
    ullx = ulld;
#pragma omp atomic compare release
  if (ulle == ullx)
    ullx = ulld;

#pragma omp atomic compare seq_cst
  llx = llx > lle ? lle : llx;
#pragma omp atomic compare seq_cst
  llx = llx < lle ? lle : llx;
#pragma omp atomic compare seq_cst
  llx = lle > llx ? lle : llx;
#pragma omp atomic compare seq_cst
  llx = lle < llx ? lle : llx;
#pragma omp atomic compare seq_cst
  if (llx > lle)
    llx = lle;
#pragma omp atomic compare seq_cst
  if (llx < lle)
    llx = lle;
#pragma omp atomic compare seq_cst
  if (lle > llx)
    llx = lle;
#pragma omp atomic compare seq_cst
  if (lle < llx)
    llx = lle;

#pragma omp atomic compare seq_cst
  llx = llx == lle ? lld : llx;
#pragma omp atomic compare seq_cst
  llx = lle == llx ? lld : llx;
#pragma omp atomic compare seq_cst
  if (llx == lle)
    llx = lld;
#pragma omp atomic compare seq_cst
  if (lle == llx)
    llx = lld;

#pragma omp atomic compare seq_cst
  ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare seq_cst
  ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare seq_cst
  ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare seq_cst
  ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare seq_cst
  if (ullx > ulle)
    ullx = ulle;
#pragma omp atomic compare seq_cst
  if (ullx < ulle)
    ullx = ulle;
#pragma omp atomic compare seq_cst
  if (ulle > ullx)
    ullx = ulle;
#pragma omp atomic compare seq_cst
  if (ulle < ullx)
    ullx = ulle;

#pragma omp atomic compare seq_cst
  ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare seq_cst
  ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare seq_cst
  if (ullx == ulle)
    ullx = ulld;
#pragma omp atomic compare seq_cst
  if (ulle == ullx)
    ullx = ulld;

#pragma omp atomic compare
  fx = fx > fe ? fe : fx;
#pragma omp atomic compare
  fx = fx < fe ? fe : fx;
#pragma omp atomic compare
  fx = fe > fx ? fe : fx;
#pragma omp atomic compare
  fx = fe < fx ? fe : fx;
#pragma omp atomic compare
  if (fx > fe)
    fx = fe;
#pragma omp atomic compare
  if (fx < fe)
    fx = fe;
#pragma omp atomic compare
  if (fe > fx)
    fx = fe;
#pragma omp atomic compare
  if (fe < fx)
    fx = fe;

#pragma omp atomic compare acq_rel
  fx = fx > fe ? fe : fx;
#pragma omp atomic compare acq_rel
  fx = fx < fe ? fe : fx;
#pragma omp atomic compare acq_rel
  fx = fe > fx ? fe : fx;
#pragma omp atomic compare acq_rel
  fx = fe < fx ? fe : fx;
#pragma omp atomic compare acq_rel
  if (fx > fe)
    fx = fe;
#pragma omp atomic compare acq_rel
  if (fx < fe)
    fx = fe;
#pragma omp atomic compare acq_rel
  if (fe > fx)
    fx = fe;
#pragma omp atomic compare acq_rel
  if (fe < fx)
    fx = fe;

#pragma omp atomic compare acquire
  fx = fx > fe ? fe : fx;
#pragma omp atomic compare acquire
  fx = fx < fe ? fe : fx;
#pragma omp atomic compare acquire
  fx = fe > fx ? fe : fx;
#pragma omp atomic compare acquire
  fx = fe < fx ? fe : fx;
#pragma omp atomic compare acquire
  if (fx > fe)
    fx = fe;
#pragma omp atomic compare acquire
  if (fx < fe)
    fx = fe;
#pragma omp atomic compare acquire
  if (fe > fx)
    fx = fe;
#pragma omp atomic compare acquire
  if (fe < fx)
    fx = fe;

#pragma omp atomic compare relaxed
  fx = fx > fe ? fe : fx;
#pragma omp atomic compare relaxed
  fx = fx < fe ? fe : fx;
#pragma omp atomic compare relaxed
  fx = fe > fx ? fe : fx;
#pragma omp atomic compare relaxed
  fx = fe < fx ? fe : fx;
#pragma omp atomic compare relaxed
  if (fx > fe)
    fx = fe;
#pragma omp atomic compare relaxed
  if (fx < fe)
    fx = fe;
#pragma omp atomic compare relaxed
  if (fe > fx)
    fx = fe;
#pragma omp atomic compare relaxed
  if (fe < fx)
    fx = fe;

#pragma omp atomic compare release
  fx = fx > fe ? fe : fx;
#pragma omp atomic compare release
  fx = fx < fe ? fe : fx;
#pragma omp atomic compare release
  fx = fe > fx ? fe : fx;
#pragma omp atomic compare release
  fx = fe < fx ? fe : fx;
#pragma omp atomic compare release
  if (fx > fe)
    fx = fe;
#pragma omp atomic compare release
  if (fx < fe)
    fx = fe;
#pragma omp atomic compare release
  if (fe > fx)
    fx = fe;
#pragma omp atomic compare release
  if (fe < fx)
    fx = fe;

#pragma omp atomic compare seq_cst
  fx = fx > fe ? fe : fx;
#pragma omp atomic compare seq_cst
  fx = fx < fe ? fe : fx;
#pragma omp atomic compare seq_cst
  fx = fe > fx ? fe : fx;
#pragma omp atomic compare seq_cst
  fx = fe < fx ? fe : fx;
#pragma omp atomic compare seq_cst
  if (fx > fe)
    fx = fe;
#pragma omp atomic compare seq_cst
  if (fx < fe)
    fx = fe;
#pragma omp atomic compare seq_cst
  if (fe > fx)
    fx = fe;
#pragma omp atomic compare seq_cst
  if (fe < fx)
    fx = fe;

#pragma omp atomic compare
  dx = dx > de ? de : dx;
#pragma omp atomic compare
  dx = dx < de ? de : dx;
#pragma omp atomic compare
  dx = de > dx ? de : dx;
#pragma omp atomic compare
  dx = de < dx ? de : dx;
#pragma omp atomic compare
  if (dx > de)
    dx = de;
#pragma omp atomic compare
  if (dx < de)
    dx = de;
#pragma omp atomic compare
  if (de > dx)
    dx = de;
#pragma omp atomic compare
  if (de < dx)
    dx = de;

#pragma omp atomic compare acq_rel
  dx = dx > de ? de : dx;
#pragma omp atomic compare acq_rel
  dx = dx < de ? de : dx;
#pragma omp atomic compare acq_rel
  dx = de > dx ? de : dx;
#pragma omp atomic compare acq_rel
  dx = de < dx ? de : dx;
#pragma omp atomic compare acq_rel
  if (dx > de)
    dx = de;
#pragma omp atomic compare acq_rel
  if (dx < de)
    dx = de;
#pragma omp atomic compare acq_rel
  if (de > dx)
    dx = de;
#pragma omp atomic compare acq_rel
  if (de < dx)
    dx = de;

#pragma omp atomic compare acquire
  dx = dx > de ? de : dx;
#pragma omp atomic compare acquire
  dx = dx < de ? de : dx;
#pragma omp atomic compare acquire
  dx = de > dx ? de : dx;
#pragma omp atomic compare acquire
  dx = de < dx ? de : dx;
#pragma omp atomic compare acquire
  if (dx > de)
    dx = de;
#pragma omp atomic compare acquire
  if (dx < de)
    dx = de;
#pragma omp atomic compare acquire
  if (de > dx)
    dx = de;
#pragma omp atomic compare acquire
  if (de < dx)
    dx = de;

#pragma omp atomic compare relaxed
  dx = dx > de ? de : dx;
#pragma omp atomic compare relaxed
  dx = dx < de ? de : dx;
#pragma omp atomic compare relaxed
  dx = de > dx ? de : dx;
#pragma omp atomic compare relaxed
  dx = de < dx ? de : dx;
#pragma omp atomic compare relaxed
  if (dx > de)
    dx = de;
#pragma omp atomic compare relaxed
  if (dx < de)
    dx = de;
#pragma omp atomic compare relaxed
  if (de > dx)
    dx = de;
#pragma omp atomic compare relaxed
  if (de < dx)
    dx = de;

#pragma omp atomic compare release
  dx = dx > de ? de : dx;
#pragma omp atomic compare release
  dx = dx < de ? de : dx;
#pragma omp atomic compare release
  dx = de > dx ? de : dx;
#pragma omp atomic compare release
  dx = de < dx ? de : dx;
#pragma omp atomic compare release
  if (dx > de)
    dx = de;
#pragma omp atomic compare release
  if (dx < de)
    dx = de;
#pragma omp atomic compare release
  if (de > dx)
    dx = de;
#pragma omp atomic compare release
  if (de < dx)
    dx = de;

#pragma omp atomic compare seq_cst
  dx = dx > de ? de : dx;
#pragma omp atomic compare seq_cst
  dx = dx < de ? de : dx;
#pragma omp atomic compare seq_cst
  dx = de > dx ? de : dx;
#pragma omp atomic compare seq_cst
  dx = de < dx ? de : dx;
#pragma omp atomic compare seq_cst
  if (dx > de)
    dx = de;
#pragma omp atomic compare seq_cst
  if (dx < de)
    dx = de;
#pragma omp atomic compare seq_cst
  if (de > dx)
    dx = de;
#pragma omp atomic compare seq_cst
  if (de < dx)
    dx = de;
}

void bar() {
  char cx, cv, cr, ce, cd;
  unsigned char ucx, ucv, ucr, uce, ucd;
  short sx, sv, sr, se, sd;
  unsigned short usx, usv, usr, use, usd;
  int ix, iv, ir, ie, id;
  unsigned int uix, uiv, uir, uie, uid;
  long lx, lv, lr, le, ld;
  unsigned long ulx, ulv, ulr, ule, uld;
  long long llx, llv, llr, lle, lld;
  unsigned long long ullx, ullv, ullr, ulle, ulld;
  float fx, fv, fe, fd;
  double dx, dv, de, dd;

#pragma omp atomic compare capture
  {
    cv = cx;
    if (ce > cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    if (cx > ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    if (ce < cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    if (cx < ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    if (cx == ce) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    if (ce == cx) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture
  {
    if (ce > cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    if (cx > ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    if (ce < cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    if (cx < ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    if (cx == ce) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    if (ce == cx) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture
  if (cx == ce) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture
  if (ce == cx) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }
#pragma omp atomic compare capture
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    if (ce > cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    if (cx > ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    if (ce < cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    if (cx < ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    if (cx == ce) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    if (ce == cx) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ce > cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (cx > ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ce < cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (cx < ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (cx == ce) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ce == cx) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  if (cx == ce) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  if (ce == cx) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    cv = cx;
    if (ce > cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    if (cx > ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    if (ce < cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    if (cx < ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    if (cx == ce) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    if (ce == cx) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (ce > cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    if (cx > ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ce < cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    if (cx < ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    if (cx == ce) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ce == cx) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  if (cx == ce) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  if (ce == cx) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    if (ce > cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    if (cx > ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    if (ce < cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    if (cx < ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    if (cx == ce) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    if (ce == cx) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (ce > cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (cx > ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ce < cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (cx < ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (cx == ce) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ce == cx) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  if (cx == ce) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  if (ce == cx) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }

#pragma omp atomic compare capture release
  {
    cv = cx;
    if (ce > cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    if (cx > ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    if (ce < cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    if (cx < ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    if (cx == ce) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    if (ce == cx) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture release
  {
    if (ce > cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    if (cx > ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    if (ce < cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    if (cx < ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    if (cx == ce) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    if (ce == cx) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture release
  if (cx == ce) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture release
  if (ce == cx) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture release
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture release
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }
#pragma omp atomic compare capture release
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    if (ce > cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    if (cx > ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    if (ce < cx) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    if (cx < ce) {
      cx = ce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    if (cx == ce) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    if (ce == cx) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ce > cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (cx > ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ce < cx) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (cx < ce) {
      cx = ce;
    }
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (cx == ce) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ce == cx) {
      cx = cd;
    }
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  if (cx == ce) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  if (ce == cx) {
    cx = cd;
  } else {
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cr = cx == ce;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    cr = ce == cx;
    if (cr) {
      cx = cd;
    } else {
      cv = cx;
    }
  }

#pragma omp atomic compare capture
  {
    ucv = ucx;
    if (uce > ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    if (ucx > uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    if (uce < ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    if (ucx < uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    if (ucx == uce) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    if (uce == ucx) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture
  {
    if (uce > ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    if (ucx > uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    if (uce < ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    if (ucx < uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    if (ucx == uce) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    if (uce == ucx) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture
  if (ucx == uce) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture
  if (uce == ucx) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }
#pragma omp atomic compare capture
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    if (uce > ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    if (ucx > uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    if (uce < ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    if (ucx < uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    if (ucx == uce) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    if (uce == ucx) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uce > ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ucx > uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uce < ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ucx < uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ucx == uce) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uce == ucx) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  if (ucx == uce) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  if (uce == ucx) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    if (uce > ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    if (ucx > uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    if (uce < ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    if (ucx < uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    if (ucx == uce) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    if (uce == ucx) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (uce > ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ucx > uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    if (uce < ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ucx < uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ucx == uce) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    if (uce == ucx) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  if (ucx == uce) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  if (uce == ucx) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    if (uce > ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    if (ucx > uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    if (uce < ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    if (ucx < uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    if (ucx == uce) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    if (uce == ucx) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (uce > ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ucx > uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uce < ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ucx < uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ucx == uce) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uce == ucx) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  if (ucx == uce) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  if (uce == ucx) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }

#pragma omp atomic compare capture release
  {
    ucv = ucx;
    if (uce > ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    if (ucx > uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    if (uce < ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    if (ucx < uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    if (ucx == uce) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    if (uce == ucx) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture release
  {
    if (uce > ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    if (ucx > uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    if (uce < ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    if (ucx < uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    if (ucx == uce) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    if (uce == ucx) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  if (ucx == uce) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  if (uce == ucx) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture release
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture release
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }
#pragma omp atomic compare capture release
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    if (uce > ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    if (ucx > uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    if (uce < ucx) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    if (ucx < uce) {
      ucx = uce;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    if (ucx == uce) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    if (uce == ucx) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uce > ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ucx > uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uce < ucx) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ucx < uce) {
      ucx = uce;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ucx == uce) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uce == ucx) {
      ucx = ucd;
    }
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  if (ucx == uce) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  if (uce == ucx) {
    ucx = ucd;
  } else {
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucr = ucx == uce;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ucr = uce == ucx;
    if (ucr) {
      ucx = ucd;
    } else {
      ucv = ucx;
    }
  }

#pragma omp atomic compare capture
  {
    sv = sx;
    if (se > sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    if (sx > se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    if (se < sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    if (sx < se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    if (sx == se) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    if (se == sx) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture
  {
    if (se > sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    if (sx > se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    if (se < sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    if (sx < se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    if (sx == se) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    if (se == sx) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture
  if (sx == se) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture
  if (se == sx) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }
#pragma omp atomic compare capture
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    if (se > sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    if (sx > se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    if (se < sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    if (sx < se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    if (sx == se) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    if (se == sx) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (se > sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (sx > se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (se < sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (sx < se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (sx == se) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (se == sx) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  if (sx == se) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  if (se == sx) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    sv = sx;
    if (se > sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    if (sx > se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    if (se < sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    if (sx < se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    if (sx == se) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    if (se == sx) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (se > sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    if (sx > se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    if (se < sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    if (sx < se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    if (sx == se) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    if (se == sx) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  if (sx == se) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  if (se == sx) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    if (se > sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    if (sx > se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    if (se < sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    if (sx < se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    if (sx == se) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    if (se == sx) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (se > sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (sx > se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (se < sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (sx < se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (sx == se) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (se == sx) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  if (sx == se) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  if (se == sx) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }

#pragma omp atomic compare capture release
  {
    sv = sx;
    if (se > sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    if (sx > se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    if (se < sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    if (sx < se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    if (sx == se) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    if (se == sx) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture release
  {
    if (se > sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    if (sx > se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    if (se < sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    if (sx < se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    if (sx == se) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    if (se == sx) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture release
  if (sx == se) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture release
  if (se == sx) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture release
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture release
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }
#pragma omp atomic compare capture release
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    if (se > sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    if (sx > se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    if (se < sx) {
      sx = se;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    if (sx < se) {
      sx = se;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    if (sx == se) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    if (se == sx) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (se > sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (sx > se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (se < sx) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (sx < se) {
      sx = se;
    }
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (sx == se) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (se == sx) {
      sx = sd;
    }
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  if (sx == se) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  if (se == sx) {
    sx = sd;
  } else {
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sr = sx == se;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    sr = se == sx;
    if (sr) {
      sx = sd;
    } else {
      sv = sx;
    }
  }

#pragma omp atomic compare capture
  {
    usv = usx;
    if (use > usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    if (usx > use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    if (use < usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    if (usx < use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    if (usx == use) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    if (use == usx) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture
  {
    if (use > usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    if (usx > use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    if (use < usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    if (usx < use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    if (usx == use) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    if (use == usx) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture
  if (usx == use) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture
  if (use == usx) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }
#pragma omp atomic compare capture
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    if (use > usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    if (usx > use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    if (use < usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    if (usx < use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    if (usx == use) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    if (use == usx) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (use > usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (usx > use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (use < usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (usx < use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (usx == use) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (use == usx) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  if (usx == use) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  if (use == usx) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    usv = usx;
    if (use > usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    if (usx > use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    if (use < usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    if (usx < use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    if (usx == use) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    if (use == usx) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (use > usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    if (usx > use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    if (use < usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    if (usx < use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    if (usx == use) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    if (use == usx) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  if (usx == use) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  if (use == usx) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    if (use > usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    if (usx > use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    if (use < usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    if (usx < use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    if (usx == use) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    if (use == usx) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (use > usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (usx > use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (use < usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (usx < use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (usx == use) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (use == usx) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  if (usx == use) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  if (use == usx) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }

#pragma omp atomic compare capture release
  {
    usv = usx;
    if (use > usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    if (usx > use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    if (use < usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    if (usx < use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    if (usx == use) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    if (use == usx) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture release
  {
    if (use > usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    if (usx > use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    if (use < usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    if (usx < use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    if (usx == use) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    if (use == usx) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture release
  if (usx == use) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture release
  if (use == usx) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture release
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture release
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }
#pragma omp atomic compare capture release
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    if (use > usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    if (usx > use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    if (use < usx) {
      usx = use;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    if (usx < use) {
      usx = use;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    if (usx == use) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    if (use == usx) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (use > usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (usx > use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (use < usx) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (usx < use) {
      usx = use;
    }
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (usx == use) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (use == usx) {
      usx = usd;
    }
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  if (usx == use) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  if (use == usx) {
    usx = usd;
  } else {
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usr = usx == use;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    usr = use == usx;
    if (usr) {
      usx = usd;
    } else {
      usv = usx;
    }
  }

#pragma omp atomic compare capture
  {
    iv = ix;
    if (ie > ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    if (ix > ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    if (ie < ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    if (ix < ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    if (ix == ie) {
      ix = id;
    }
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    if (ie == ix) {
      ix = id;
    }
  }
#pragma omp atomic compare capture
  {
    if (ie > ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    if (ix > ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    if (ie < ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    if (ix < ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    if (ix == ie) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    if (ie == ix) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture
  if (ix == ie) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture
  if (ie == ix) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }
#pragma omp atomic compare capture
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    if (ie > ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    if (ix > ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    if (ie < ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    if (ix < ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    if (ix == ie) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    if (ie == ix) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ie > ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ix > ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ie < ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ix < ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ix == ie) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ie == ix) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  if (ix == ie) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  if (ie == ix) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }

#pragma omp atomic compare capture acquire
  {
    iv = ix;
    if (ie > ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    if (ix > ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    if (ie < ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    if (ix < ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    if (ix == ie) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    if (ie == ix) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (ie > ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    if (ix > ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    if (ie < ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    if (ix < ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    if (ix == ie) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    if (ie == ix) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  if (ix == ie) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  if (ie == ix) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    if (ie > ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    if (ix > ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    if (ie < ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    if (ix < ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    if (ix == ie) {
      ix = id;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    if (ie == ix) {
      ix = id;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (ie > ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ix > ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ie < ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ix < ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ix == ie) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ie == ix) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  if (ix == ie) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  if (ie == ix) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }

#pragma omp atomic compare capture release
  {
    iv = ix;
    if (ie > ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    if (ix > ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    if (ie < ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    if (ix < ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    if (ix == ie) {
      ix = id;
    }
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    if (ie == ix) {
      ix = id;
    }
  }
#pragma omp atomic compare capture release
  {
    if (ie > ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    if (ix > ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    if (ie < ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    if (ix < ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    if (ix == ie) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    if (ie == ix) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture release
  if (ix == ie) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture release
  if (ie == ix) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    if (ie > ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    if (ix > ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    if (ie < ix) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    if (ix < ie) {
      ix = ie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    if (ix == ie) {
      ix = id;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    if (ie == ix) {
      ix = id;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ie > ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ix > ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ie < ix) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ix < ie) {
      ix = ie;
    }
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ix == ie) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ie == ix) {
      ix = id;
    }
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  if (ix == ie) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  if (ie == ix) {
    ix = id;
  } else {
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = ix == ie;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = ie == ix;
    if (ir) {
      ix = id;
    } else {
      iv = ix;
    }
  }

#pragma omp atomic compare capture
  {
    uiv = uix;
    if (uie > uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    if (uix > uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    if (uie < uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    if (uix < uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    if (uix == uie) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    if (uie == uix) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture
  {
    if (uie > uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    if (uix > uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    if (uie < uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    if (uix < uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    if (uix == uie) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    if (uie == uix) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture
  if (uix == uie) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture
  if (uie == uix) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }
#pragma omp atomic compare capture
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    if (uie > uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    if (uix > uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    if (uie < uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    if (uix < uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    if (uix == uie) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    if (uie == uix) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uie > uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uix > uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uie < uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uix < uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uix == uie) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (uie == uix) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  if (uix == uie) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  if (uie == uix) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }

#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    if (uie > uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    if (uix > uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    if (uie < uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    if (uix < uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    if (uix == uie) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    if (uie == uix) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (uie > uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    if (uix > uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    if (uie < uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    if (uix < uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    if (uix == uie) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    if (uie == uix) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  if (uix == uie) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  if (uie == uix) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }
#pragma omp atomic compare capture acquire
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    if (uie > uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    if (uix > uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    if (uie < uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    if (uix < uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    if (uix == uie) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    if (uie == uix) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (uie > uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uix > uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uie < uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uix < uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uix == uie) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    if (uie == uix) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  if (uix == uie) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  if (uie == uix) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }

#pragma omp atomic compare capture release
  {
    uiv = uix;
    if (uie > uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    if (uix > uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    if (uie < uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    if (uix < uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    if (uix == uie) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    if (uie == uix) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture release
  {
    if (uie > uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    if (uix > uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    if (uie < uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    if (uix < uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    if (uix == uie) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    if (uie == uix) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture release
  if (uix == uie) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture release
  if (uie == uix) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture release
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture release
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }
#pragma omp atomic compare capture release
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    if (uie > uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    if (uix > uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    if (uie < uix) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    if (uix < uie) {
      uix = uie;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    if (uix == uie) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    if (uie == uix) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uie > uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uix > uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uie < uix) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uix < uie) {
      uix = uie;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uix == uie) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (uie == uix) {
      uix = uid;
    }
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  if (uix == uie) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  if (uie == uix) {
    uix = uid;
  } else {
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uir = uix == uie;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    uir = uie == uix;
    if (uir) {
      uix = uid;
    } else {
      uiv = uix;
    }
  }

#pragma omp atomic compare capture
  {
    lv = lx;
    if (le > lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    if (lx > le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    if (le < lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    if (lx < le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    if (lx == le) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    if (le == lx) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture
  {
    if (le > lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    if (lx > le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    if (le < lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    if (lx < le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    if (lx == le) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    if (le == lx) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture
  if (lx == le) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture
  if (le == lx) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }
#pragma omp atomic compare capture
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    if (le > lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    if (lx > le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    if (le < lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    if (lx < le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    if (lx == le) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    if (le == lx) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (le > lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (lx > le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (le < lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (lx < le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (lx == le) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (le == lx) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  if (lx == le) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  if (le == lx) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    lv = lx;
    if (le > lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    if (lx > le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    if (le < lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    if (lx < le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    if (lx == le) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    if (le == lx) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (le > lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    if (lx > le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    if (le < lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    if (lx < le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    if (lx == le) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    if (le == lx) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  if (lx == le) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  if (le == lx) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    if (le > lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    if (lx > le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    if (le < lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    if (lx < le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    if (lx == le) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    if (le == lx) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (le > lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (lx > le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (le < lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (lx < le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (lx == le) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (le == lx) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  if (lx == le) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  if (le == lx) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }

#pragma omp atomic compare capture release
  {
    lv = lx;
    if (le > lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    if (lx > le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    if (le < lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    if (lx < le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    if (lx == le) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    if (le == lx) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture release
  {
    if (le > lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    if (lx > le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    if (le < lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    if (lx < le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    if (lx == le) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    if (le == lx) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture release
  if (lx == le) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture release
  if (le == lx) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture release
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture release
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }
#pragma omp atomic compare capture release
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    if (le > lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    if (lx > le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    if (le < lx) {
      lx = le;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    if (lx < le) {
      lx = le;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    if (lx == le) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    if (le == lx) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (le > lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (lx > le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (le < lx) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (lx < le) {
      lx = le;
    }
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (lx == le) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (le == lx) {
      lx = ld;
    }
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  if (lx == le) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  if (le == lx) {
    lx = ld;
  } else {
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lr = lx == le;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    lr = le == lx;
    if (lr) {
      lx = ld;
    } else {
      lv = lx;
    }
  }

#pragma omp atomic compare capture
  {
    ulv = ulx;
    if (ule > ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    if (ulx > ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    if (ule < ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    if (ulx < ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    if (ulx == ule) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    if (ule == ulx) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture
  {
    if (ule > ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    if (ulx > ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    if (ule < ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    if (ulx < ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    if (ulx == ule) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    if (ule == ulx) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture
  if (ulx == ule) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture
  if (ule == ulx) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }
#pragma omp atomic compare capture
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    if (ule > ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    if (ulx > ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    if (ule < ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    if (ulx < ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    if (ulx == ule) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    if (ule == ulx) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ule > ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ulx > ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ule < ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ulx < ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ulx == ule) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ule == ulx) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  if (ulx == ule) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  if (ule == ulx) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    if (ule > ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    if (ulx > ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    if (ule < ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    if (ulx < ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    if (ulx == ule) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    if (ule == ulx) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (ule > ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ulx > ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ule < ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ulx < ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ulx == ule) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ule == ulx) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  if (ulx == ule) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  if (ule == ulx) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    if (ule > ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    if (ulx > ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    if (ule < ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    if (ulx < ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    if (ulx == ule) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    if (ule == ulx) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (ule > ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ulx > ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ule < ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ulx < ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ulx == ule) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ule == ulx) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  if (ulx == ule) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  if (ule == ulx) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }

#pragma omp atomic compare capture release
  {
    ulv = ulx;
    if (ule > ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    if (ulx > ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    if (ule < ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    if (ulx < ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    if (ulx == ule) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    if (ule == ulx) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture release
  {
    if (ule > ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    if (ulx > ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    if (ule < ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    if (ulx < ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    if (ulx == ule) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    if (ule == ulx) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  if (ulx == ule) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  if (ule == ulx) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture release
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture release
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }
#pragma omp atomic compare capture release
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    if (ule > ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    if (ulx > ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    if (ule < ulx) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    if (ulx < ule) {
      ulx = ule;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    if (ulx == ule) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    if (ule == ulx) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ule > ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ulx > ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ule < ulx) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ulx < ule) {
      ulx = ule;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ulx == ule) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ule == ulx) {
      ulx = uld;
    }
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  if (ulx == ule) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  if (ule == ulx) {
    ulx = uld;
  } else {
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulr = ulx == ule;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ulr = ule == ulx;
    if (ulr) {
      ulx = uld;
    } else {
      ulv = ulx;
    }
  }

#pragma omp atomic compare capture
  {
    llv = llx;
    if (lle > llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    if (llx > lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    if (lle < llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    if (llx < lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    if (llx == lle) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    if (lle == llx) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture
  {
    if (lle > llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    if (llx > lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    if (lle < llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    if (llx < lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    if (llx == lle) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    if (lle == llx) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture
  if (llx == lle) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture
  if (lle == llx) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }
#pragma omp atomic compare capture
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    if (lle > llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    if (llx > lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    if (lle < llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    if (llx < lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    if (llx == lle) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    if (lle == llx) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (lle > llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (llx > lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (lle < llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (llx < lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (llx == lle) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (lle == llx) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  if (llx == lle) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  if (lle == llx) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    llv = llx;
    if (lle > llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    if (llx > lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    if (lle < llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    if (llx < lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    if (llx == lle) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    if (lle == llx) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (lle > llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    if (llx > lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    if (lle < llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    if (llx < lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    if (llx == lle) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    if (lle == llx) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  if (llx == lle) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  if (lle == llx) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    if (lle > llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    if (llx > lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    if (lle < llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    if (llx < lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    if (llx == lle) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    if (lle == llx) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (lle > llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (llx > lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (lle < llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (llx < lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (llx == lle) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (lle == llx) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  if (llx == lle) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  if (lle == llx) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }

#pragma omp atomic compare capture release
  {
    llv = llx;
    if (lle > llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    if (llx > lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    if (lle < llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    if (llx < lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    if (llx == lle) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    if (lle == llx) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture release
  {
    if (lle > llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    if (llx > lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    if (lle < llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    if (llx < lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    if (llx == lle) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    if (lle == llx) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture release
  if (llx == lle) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture release
  if (lle == llx) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture release
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture release
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }
#pragma omp atomic compare capture release
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    if (lle > llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    if (llx > lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    if (lle < llx) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    if (llx < lle) {
      llx = lle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    if (llx == lle) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    if (lle == llx) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (lle > llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (llx > lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (lle < llx) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (llx < lle) {
      llx = lle;
    }
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (llx == lle) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (lle == llx) {
      llx = lld;
    }
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  if (llx == lle) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  if (lle == llx) {
    llx = lld;
  } else {
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llr = llx == lle;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    llr = lle == llx;
    if (llr) {
      llx = lld;
    } else {
      llv = llx;
    }
  }

#pragma omp atomic compare capture
  {
    ullv = ullx;
    if (ulle > ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    if (ullx > ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    if (ulle < ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    if (ullx < ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    if (ullx == ulle) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    if (ulle == ullx) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture
  {
    if (ulle > ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    if (ullx > ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    if (ulle < ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    if (ullx < ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    if (ullx == ulle) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    if (ulle == ullx) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture
  if (ullx == ulle) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture
  if (ulle == ullx) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }
#pragma omp atomic compare capture
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    if (ulle > ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    if (ullx > ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    if (ulle < ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    if (ullx < ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    if (ullx == ulle) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    if (ulle == ullx) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ulle > ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ullx > ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ulle < ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ullx < ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ullx == ulle) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (ulle == ullx) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  if (ullx == ulle) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  if (ulle == ullx) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    if (ulle > ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    if (ullx > ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    if (ulle < ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    if (ullx < ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    if (ullx == ulle) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    if (ulle == ullx) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (ulle > ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ullx > ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ulle < ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ullx < ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ullx == ulle) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    if (ulle == ullx) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  if (ullx == ulle) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  if (ulle == ullx) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    if (ulle > ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    if (ullx > ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    if (ulle < ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    if (ullx < ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    if (ullx == ulle) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    if (ulle == ullx) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (ulle > ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ullx > ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ulle < ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ullx < ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ullx == ulle) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (ulle == ullx) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  if (ullx == ulle) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  if (ulle == ullx) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }

#pragma omp atomic compare capture release
  {
    ullv = ullx;
    if (ulle > ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    if (ullx > ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    if (ulle < ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    if (ullx < ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    if (ullx == ulle) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    if (ulle == ullx) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture release
  {
    if (ulle > ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    if (ullx > ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    if (ulle < ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    if (ullx < ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    if (ullx == ulle) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    if (ulle == ullx) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  if (ullx == ulle) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  if (ulle == ullx) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture release
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture release
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }
#pragma omp atomic compare capture release
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    if (ulle > ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    if (ullx > ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    if (ulle < ullx) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    if (ullx < ulle) {
      ullx = ulle;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    if (ullx == ulle) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    if (ulle == ullx) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ulle > ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ullx > ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ulle < ullx) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ullx < ulle) {
      ullx = ulle;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ullx == ulle) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (ulle == ullx) {
      ullx = ulld;
    }
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  if (ullx == ulle) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  if (ulle == ullx) {
    ullx = ulld;
  } else {
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullr = ullx == ulle;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ullr = ulle == ullx;
    if (ullr) {
      ullx = ulld;
    } else {
      ullv = ullx;
    }
  }

#pragma omp atomic compare capture
  {
    fv = fx;
    if (fe > fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    if (fx > fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    if (fe < fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    if (fx < fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    if (fx == fe) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    if (fe == fx) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture
  {
    if (fe > fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    if (fx > fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    if (fe < fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    if (fx < fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    if (fx == fe) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    if (fe == fx) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture
  if (fx == fe) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture
  if (fe == fx) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }
#pragma omp atomic compare capture
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    if (fe > fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    if (fx > fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    if (fe < fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    if (fx < fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    if (fx == fe) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    if (fe == fx) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (fe > fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (fx > fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (fe < fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (fx < fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (fx == fe) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (fe == fx) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  if (fx == fe) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  if (fe == fx) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    fv = fx;
    if (fe > fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    if (fx > fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    if (fe < fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    if (fx < fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    if (fx == fe) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    if (fe == fx) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (fe > fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    if (fx > fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    if (fe < fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    if (fx < fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    if (fx == fe) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    if (fe == fx) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  if (fx == fe) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  if (fe == fx) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    if (fe > fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    if (fx > fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    if (fe < fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    if (fx < fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    if (fx == fe) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    if (fe == fx) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (fe > fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (fx > fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (fe < fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (fx < fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (fx == fe) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (fe == fx) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  if (fx == fe) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  if (fe == fx) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }

#pragma omp atomic compare capture release
  {
    fv = fx;
    if (fe > fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    if (fx > fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    if (fe < fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    if (fx < fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    if (fx == fe) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    if (fe == fx) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture release
  {
    if (fe > fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    if (fx > fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    if (fe < fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    if (fx < fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    if (fx == fe) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    if (fe == fx) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture release
  if (fx == fe) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture release
  if (fe == fx) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    if (fe > fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    if (fx > fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    if (fe < fx) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    if (fx < fe) {
      fx = fe;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    if (fx == fe) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    if (fe == fx) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (fe > fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (fx > fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (fe < fx) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (fx < fe) {
      fx = fe;
    }
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (fx == fe) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (fe == fx) {
      fx = fd;
    }
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  if (fx == fe) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  if (fe == fx) {
    fx = fd;
  } else {
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = fx == fe;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = fe == fx;
    if (ir) {
      fx = fd;
    } else {
      fv = fx;
    }
  }

#pragma omp atomic compare capture
  {
    dv = dx;
    if (de > dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    if (dx > de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    if (de < dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    if (dx < de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    if (dx == de) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    if (de == dx) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture
  {
    if (de > dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    if (dx > de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    if (de < dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    if (dx < de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    if (dx == de) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    if (de == dx) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture
  if (dx == de) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture
  if (de == dx) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
#pragma omp atomic compare capture
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }

#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    if (de > dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    if (dx > de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    if (de < dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    if (dx < de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    if (dx == de) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    if (de == dx) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    if (de > dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (dx > de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (de < dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (dx < de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (dx == de) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    if (de == dx) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  if (dx == de) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  if (de == dx) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
#pragma omp atomic compare capture acq_rel
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }

#pragma omp atomic compare capture acquire
  {
    dv = dx;
    if (de > dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    if (dx > de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    if (de < dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    if (dx < de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    if (dx == de) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    if (de == dx) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    if (de > dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    if (dx > de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    if (de < dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    if (dx < de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    if (dx == de) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    if (de == dx) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  if (dx == de) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  if (de == dx) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
#pragma omp atomic compare capture acquire
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }

#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    if (de > dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    if (dx > de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    if (de < dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    if (dx < de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    if (dx == de) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    if (de == dx) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    if (de > dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (dx > de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (de < dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (dx < de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (dx == de) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    if (de == dx) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  if (dx == de) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  if (de == dx) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
#pragma omp atomic compare capture relaxed
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }

#pragma omp atomic compare capture release
  {
    dv = dx;
    if (de > dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    if (dx > de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    if (de < dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    if (dx < de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    if (dx == de) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    if (de == dx) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture release
  {
    if (de > dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    if (dx > de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    if (de < dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    if (dx < de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    if (dx == de) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    if (de == dx) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture release
  if (dx == de) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture release
  if (de == dx) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
#pragma omp atomic compare capture release
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }

#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    if (de > dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    if (dx > de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    if (de < dx) {
      dx = de;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    if (dx < de) {
      dx = de;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    if (dx == de) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    if (de == dx) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    if (de > dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (dx > de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (de < dx) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (dx < de) {
      dx = de;
    }
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (dx == de) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    if (de == dx) {
      dx = dd;
    }
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  if (dx == de) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  if (de == dx) {
    dx = dd;
  } else {
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = dx == de;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
#pragma omp atomic compare capture seq_cst
  {
    ir = de == dx;
    if (ir) {
      dx = dd;
    } else {
      dv = dx;
    }
  }
}


char cxevd() {
  char cx, cv, ce, cd;

#pragma omp atomic compare capture
  {
    cv = cx;
    cx = cx > ce ? ce : cx;
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    cx = cx < ce ? ce : cx;
  }
#pragma omp atomic compare capture
  {
    cv = cx;
    cx = cx == ce ? cd : cx;
  }
#pragma omp atomic compare capture
  {
    cx = cx > ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    cx = cx < ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture
  {
    cx = cx == ce ? cd : cx;
    cv = cx;
  }

#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    cx = cx > ce ? ce : cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    cx = cx < ce ? ce : cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    cv = cx;
    cx = cx == ce ? cd : cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    cx = cx > ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    cx = cx < ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture acq_rel
  {
    cx = cx == ce ? cd : cx;
    cv = cx;
  }

#pragma omp atomic compare capture acquire
  {
    cv = cx;
    cx = cx > ce ? ce : cx;
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    cx = cx < ce ? ce : cx;
  }
#pragma omp atomic compare capture acquire
  {
    cv = cx;
    cx = cx == ce ? cd : cx;
  }
#pragma omp atomic compare capture acquire
  {
    cx = cx > ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    cx = cx < ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture acquire
  {
    cx = cx == ce ? cd : cx;
    cv = cx;
  }

#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    cx = cx > ce ? ce : cx;
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    cx = cx < ce ? ce : cx;
  }
#pragma omp atomic compare capture relaxed
  {
    cv = cx;
    cx = cx == ce ? cd : cx;
  }
#pragma omp atomic compare capture relaxed
  {
    cx = cx > ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    cx = cx < ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture relaxed
  {
    cx = cx == ce ? cd : cx;
    cv = cx;
  }

#pragma omp atomic compare capture release
  {
    cv = cx;
    cx = cx > ce ? ce : cx;
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    cx = cx < ce ? ce : cx;
  }
#pragma omp atomic compare capture release
  {
    cv = cx;
    cx = cx == ce ? cd : cx;
  }
#pragma omp atomic compare capture release
  {
    cx = cx > ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    cx = cx < ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture release
  {
    cx = cx == ce ? cd : cx;
    cv = cx;
  }

#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    cx = cx > ce ? ce : cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    cx = cx < ce ? ce : cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    cv = cx;
    cx = cx == ce ? cd : cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    cx = cx > ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    cx = cx < ce ? ce : cx;
    cv = cx;
  }
#pragma omp atomic compare capture seq_cst
  {
    cx = cx == ce ? cd : cx;
    cv = cx;
  }

  return cv;
}

unsigned char ucxevd() {
  unsigned char ucx, ucv, uce, ucd;

#pragma omp atomic compare capture
  {
    ucv = ucx;
    ucx = ucx > uce ? uce : ucx;
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    ucx = ucx < uce ? uce : ucx;
  }
#pragma omp atomic compare capture
  {
    ucv = ucx;
    ucx = ucx == uce ? ucd : ucx;
  }
#pragma omp atomic compare capture
  {
    ucx = ucx > uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    ucx = ucx < uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture
  {
    ucx = ucx == uce ? ucd : ucx;
    ucv = ucx;
  }

#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    ucx = ucx > uce ? uce : ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    ucx = ucx < uce ? uce : ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ucv = ucx;
    ucx = ucx == uce ? ucd : ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ucx = ucx > uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ucx = ucx < uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ucx = ucx == uce ? ucd : ucx;
    ucv = ucx;
  }

#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    ucx = ucx > uce ? uce : ucx;
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    ucx = ucx < uce ? uce : ucx;
  }
#pragma omp atomic compare capture acquire
  {
    ucv = ucx;
    ucx = ucx == uce ? ucd : ucx;
  }
#pragma omp atomic compare capture acquire
  {
    ucx = ucx > uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    ucx = ucx < uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture acquire
  {
    ucx = ucx == uce ? ucd : ucx;
    ucv = ucx;
  }

#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    ucx = ucx > uce ? uce : ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    ucx = ucx < uce ? uce : ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    ucv = ucx;
    ucx = ucx == uce ? ucd : ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    ucx = ucx > uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    ucx = ucx < uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture relaxed
  {
    ucx = ucx == uce ? ucd : ucx;
    ucv = ucx;
  }

#pragma omp atomic compare capture release
  {
    ucv = ucx;
    ucx = ucx > uce ? uce : ucx;
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    ucx = ucx < uce ? uce : ucx;
  }
#pragma omp atomic compare capture release
  {
    ucv = ucx;
    ucx = ucx == uce ? ucd : ucx;
  }
#pragma omp atomic compare capture release
  {
    ucx = ucx > uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    ucx = ucx < uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture release
  {
    ucx = ucx == uce ? ucd : ucx;
    ucv = ucx;
  }

#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    ucx = ucx > uce ? uce : ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    ucx = ucx < uce ? uce : ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ucv = ucx;
    ucx = ucx == uce ? ucd : ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ucx = ucx > uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ucx = ucx < uce ? uce : ucx;
    ucv = ucx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ucx = ucx == uce ? ucd : ucx;
    ucv = ucx;
  }

  return ucv;
}

short sxevd() {
  short sx, sv, se, sd;

#pragma omp atomic compare capture
  {
    sv = sx;
    sx = sx > se ? se : sx;
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    sx = sx < se ? se : sx;
  }
#pragma omp atomic compare capture
  {
    sv = sx;
    sx = sx == se ? sd : sx;
  }
#pragma omp atomic compare capture
  {
    sx = sx > se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    sx = sx < se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture
  {
    sx = sx == se ? sd : sx;
    sv = sx;
  }

#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    sx = sx > se ? se : sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    sx = sx < se ? se : sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    sv = sx;
    sx = sx == se ? sd : sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    sx = sx > se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    sx = sx < se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture acq_rel
  {
    sx = sx == se ? sd : sx;
    sv = sx;
  }

#pragma omp atomic compare capture acquire
  {
    sv = sx;
    sx = sx > se ? se : sx;
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    sx = sx < se ? se : sx;
  }
#pragma omp atomic compare capture acquire
  {
    sv = sx;
    sx = sx == se ? sd : sx;
  }
#pragma omp atomic compare capture acquire
  {
    sx = sx > se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    sx = sx < se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture acquire
  {
    sx = sx == se ? sd : sx;
    sv = sx;
  }

#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    sx = sx > se ? se : sx;
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    sx = sx < se ? se : sx;
  }
#pragma omp atomic compare capture relaxed
  {
    sv = sx;
    sx = sx == se ? sd : sx;
  }
#pragma omp atomic compare capture relaxed
  {
    sx = sx > se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    sx = sx < se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture relaxed
  {
    sx = sx == se ? sd : sx;
    sv = sx;
  }

#pragma omp atomic compare capture release
  {
    sv = sx;
    sx = sx > se ? se : sx;
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    sx = sx < se ? se : sx;
  }
#pragma omp atomic compare capture release
  {
    sv = sx;
    sx = sx == se ? sd : sx;
  }
#pragma omp atomic compare capture release
  {
    sx = sx > se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    sx = sx < se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture release
  {
    sx = sx == se ? sd : sx;
    sv = sx;
  }

#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    sx = sx > se ? se : sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    sx = sx < se ? se : sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    sv = sx;
    sx = sx == se ? sd : sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    sx = sx > se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    sx = sx < se ? se : sx;
    sv = sx;
  }
#pragma omp atomic compare capture seq_cst
  {
    sx = sx == se ? sd : sx;
    sv = sx;
  }

  return sv;
}

unsigned short usxevd() {
  unsigned short usx, usv, use, usd;

#pragma omp atomic compare capture
  {
    usv = usx;
    usx = usx > use ? use : usx;
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    usx = usx < use ? use : usx;
  }
#pragma omp atomic compare capture
  {
    usv = usx;
    usx = usx == use ? usd : usx;
  }
#pragma omp atomic compare capture
  {
    usx = usx > use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    usx = usx < use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture
  {
    usx = usx == use ? usd : usx;
    usv = usx;
  }

#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    usx = usx > use ? use : usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    usx = usx < use ? use : usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    usv = usx;
    usx = usx == use ? usd : usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    usx = usx > use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    usx = usx < use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture acq_rel
  {
    usx = usx == use ? usd : usx;
    usv = usx;
  }

#pragma omp atomic compare capture acquire
  {
    usv = usx;
    usx = usx > use ? use : usx;
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    usx = usx < use ? use : usx;
  }
#pragma omp atomic compare capture acquire
  {
    usv = usx;
    usx = usx == use ? usd : usx;
  }
#pragma omp atomic compare capture acquire
  {
    usx = usx > use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    usx = usx < use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture acquire
  {
    usx = usx == use ? usd : usx;
    usv = usx;
  }

#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    usx = usx > use ? use : usx;
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    usx = usx < use ? use : usx;
  }
#pragma omp atomic compare capture relaxed
  {
    usv = usx;
    usx = usx == use ? usd : usx;
  }
#pragma omp atomic compare capture relaxed
  {
    usx = usx > use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    usx = usx < use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture relaxed
  {
    usx = usx == use ? usd : usx;
    usv = usx;
  }

#pragma omp atomic compare capture release
  {
    usv = usx;
    usx = usx > use ? use : usx;
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    usx = usx < use ? use : usx;
  }
#pragma omp atomic compare capture release
  {
    usv = usx;
    usx = usx == use ? usd : usx;
  }
#pragma omp atomic compare capture release
  {
    usx = usx > use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    usx = usx < use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture release
  {
    usx = usx == use ? usd : usx;
    usv = usx;
  }

#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    usx = usx > use ? use : usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    usx = usx < use ? use : usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    usv = usx;
    usx = usx == use ? usd : usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    usx = usx > use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    usx = usx < use ? use : usx;
    usv = usx;
  }
#pragma omp atomic compare capture seq_cst
  {
    usx = usx == use ? usd : usx;
    usv = usx;
  }

  return usv;
}

int ixevd() {
  int ix, iv, ie, id;

#pragma omp atomic compare capture
  {
    iv = ix;
    ix = ix > ie ? ie : ix;
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    ix = ix < ie ? ie : ix;
  }
#pragma omp atomic compare capture
  {
    iv = ix;
    ix = ix == ie ? id : ix;
  }
#pragma omp atomic compare capture
  {
    ix = ix > ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    ix = ix < ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture
  {
    ix = ix == ie ? id : ix;
    iv = ix;
  }

#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    ix = ix > ie ? ie : ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    ix = ix < ie ? ie : ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    iv = ix;
    ix = ix == ie ? id : ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    ix = ix > ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    ix = ix < ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture acq_rel
  {
    ix = ix == ie ? id : ix;
    iv = ix;
  }

#pragma omp atomic compare capture acquire
  {
    iv = ix;
    ix = ix > ie ? ie : ix;
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    ix = ix < ie ? ie : ix;
  }
#pragma omp atomic compare capture acquire
  {
    iv = ix;
    ix = ix == ie ? id : ix;
  }
#pragma omp atomic compare capture acquire
  {
    ix = ix > ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    ix = ix < ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture acquire
  {
    ix = ix == ie ? id : ix;
    iv = ix;
  }

#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    ix = ix > ie ? ie : ix;
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    ix = ix < ie ? ie : ix;
  }
#pragma omp atomic compare capture relaxed
  {
    iv = ix;
    ix = ix == ie ? id : ix;
  }
#pragma omp atomic compare capture relaxed
  {
    ix = ix > ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    ix = ix < ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture relaxed
  {
    ix = ix == ie ? id : ix;
    iv = ix;
  }

#pragma omp atomic compare capture release
  {
    iv = ix;
    ix = ix > ie ? ie : ix;
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    ix = ix < ie ? ie : ix;
  }
#pragma omp atomic compare capture release
  {
    iv = ix;
    ix = ix == ie ? id : ix;
  }
#pragma omp atomic compare capture release
  {
    ix = ix > ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    ix = ix < ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture release
  {
    ix = ix == ie ? id : ix;
    iv = ix;
  }

#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    ix = ix > ie ? ie : ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    ix = ix < ie ? ie : ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    iv = ix;
    ix = ix == ie ? id : ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    ix = ix > ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    ix = ix < ie ? ie : ix;
    iv = ix;
  }
#pragma omp atomic compare capture seq_cst
  {
    ix = ix == ie ? id : ix;
    iv = ix;
  }

  return iv;
}

unsigned int uixevd() {
  unsigned int uix, uiv, uie, uid;

#pragma omp atomic compare capture
  {
    uiv = uix;
    uix = uix > uie ? uie : uix;
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    uix = uix < uie ? uie : uix;
  }
#pragma omp atomic compare capture
  {
    uiv = uix;
    uix = uix == uie ? uid : uix;
  }
#pragma omp atomic compare capture
  {
    uix = uix > uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    uix = uix < uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture
  {
    uix = uix == uie ? uid : uix;
    uiv = uix;
  }

#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    uix = uix > uie ? uie : uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    uix = uix < uie ? uie : uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    uiv = uix;
    uix = uix == uie ? uid : uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    uix = uix > uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    uix = uix < uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture acq_rel
  {
    uix = uix == uie ? uid : uix;
    uiv = uix;
  }

#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    uix = uix > uie ? uie : uix;
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    uix = uix < uie ? uie : uix;
  }
#pragma omp atomic compare capture acquire
  {
    uiv = uix;
    uix = uix == uie ? uid : uix;
  }
#pragma omp atomic compare capture acquire
  {
    uix = uix > uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    uix = uix < uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture acquire
  {
    uix = uix == uie ? uid : uix;
    uiv = uix;
  }

#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    uix = uix > uie ? uie : uix;
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    uix = uix < uie ? uie : uix;
  }
#pragma omp atomic compare capture relaxed
  {
    uiv = uix;
    uix = uix == uie ? uid : uix;
  }
#pragma omp atomic compare capture relaxed
  {
    uix = uix > uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    uix = uix < uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture relaxed
  {
    uix = uix == uie ? uid : uix;
    uiv = uix;
  }

#pragma omp atomic compare capture release
  {
    uiv = uix;
    uix = uix > uie ? uie : uix;
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    uix = uix < uie ? uie : uix;
  }
#pragma omp atomic compare capture release
  {
    uiv = uix;
    uix = uix == uie ? uid : uix;
  }
#pragma omp atomic compare capture release
  {
    uix = uix > uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    uix = uix < uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture release
  {
    uix = uix == uie ? uid : uix;
    uiv = uix;
  }

#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    uix = uix > uie ? uie : uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    uix = uix < uie ? uie : uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    uiv = uix;
    uix = uix == uie ? uid : uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    uix = uix > uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    uix = uix < uie ? uie : uix;
    uiv = uix;
  }
#pragma omp atomic compare capture seq_cst
  {
    uix = uix == uie ? uid : uix;
    uiv = uix;
  }

  return uiv;
}

long lxevd() {
  long lx, lv, le, ld;

#pragma omp atomic compare capture
  {
    lv = lx;
    lx = lx > le ? le : lx;
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    lx = lx < le ? le : lx;
  }
#pragma omp atomic compare capture
  {
    lv = lx;
    lx = lx == le ? ld : lx;
  }
#pragma omp atomic compare capture
  {
    lx = lx > le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    lx = lx < le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture
  {
    lx = lx == le ? ld : lx;
    lv = lx;
  }

#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    lx = lx > le ? le : lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    lx = lx < le ? le : lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    lv = lx;
    lx = lx == le ? ld : lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    lx = lx > le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    lx = lx < le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture acq_rel
  {
    lx = lx == le ? ld : lx;
    lv = lx;
  }

#pragma omp atomic compare capture acquire
  {
    lv = lx;
    lx = lx > le ? le : lx;
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    lx = lx < le ? le : lx;
  }
#pragma omp atomic compare capture acquire
  {
    lv = lx;
    lx = lx == le ? ld : lx;
  }
#pragma omp atomic compare capture acquire
  {
    lx = lx > le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    lx = lx < le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture acquire
  {
    lx = lx == le ? ld : lx;
    lv = lx;
  }

#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    lx = lx > le ? le : lx;
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    lx = lx < le ? le : lx;
  }
#pragma omp atomic compare capture relaxed
  {
    lv = lx;
    lx = lx == le ? ld : lx;
  }
#pragma omp atomic compare capture relaxed
  {
    lx = lx > le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    lx = lx < le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture relaxed
  {
    lx = lx == le ? ld : lx;
    lv = lx;
  }

#pragma omp atomic compare capture release
  {
    lv = lx;
    lx = lx > le ? le : lx;
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    lx = lx < le ? le : lx;
  }
#pragma omp atomic compare capture release
  {
    lv = lx;
    lx = lx == le ? ld : lx;
  }
#pragma omp atomic compare capture release
  {
    lx = lx > le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    lx = lx < le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture release
  {
    lx = lx == le ? ld : lx;
    lv = lx;
  }

#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    lx = lx > le ? le : lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    lx = lx < le ? le : lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    lv = lx;
    lx = lx == le ? ld : lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    lx = lx > le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    lx = lx < le ? le : lx;
    lv = lx;
  }
#pragma omp atomic compare capture seq_cst
  {
    lx = lx == le ? ld : lx;
    lv = lx;
  }

  return lv;
}

unsigned long ulxevd() {
  unsigned long ulx, ulv, ule, uld;

#pragma omp atomic compare capture
  {
    ulv = ulx;
    ulx = ulx > ule ? ule : ulx;
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    ulx = ulx < ule ? ule : ulx;
  }
#pragma omp atomic compare capture
  {
    ulv = ulx;
    ulx = ulx == ule ? uld : ulx;
  }
#pragma omp atomic compare capture
  {
    ulx = ulx > ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    ulx = ulx < ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture
  {
    ulx = ulx == ule ? uld : ulx;
    ulv = ulx;
  }

#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    ulx = ulx > ule ? ule : ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    ulx = ulx < ule ? ule : ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ulv = ulx;
    ulx = ulx == ule ? uld : ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ulx = ulx > ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ulx = ulx < ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ulx = ulx == ule ? uld : ulx;
    ulv = ulx;
  }

#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    ulx = ulx > ule ? ule : ulx;
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    ulx = ulx < ule ? ule : ulx;
  }
#pragma omp atomic compare capture acquire
  {
    ulv = ulx;
    ulx = ulx == ule ? uld : ulx;
  }
#pragma omp atomic compare capture acquire
  {
    ulx = ulx > ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    ulx = ulx < ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture acquire
  {
    ulx = ulx == ule ? uld : ulx;
    ulv = ulx;
  }

#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    ulx = ulx > ule ? ule : ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    ulx = ulx < ule ? ule : ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    ulv = ulx;
    ulx = ulx == ule ? uld : ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    ulx = ulx > ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    ulx = ulx < ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture relaxed
  {
    ulx = ulx == ule ? uld : ulx;
    ulv = ulx;
  }

#pragma omp atomic compare capture release
  {
    ulv = ulx;
    ulx = ulx > ule ? ule : ulx;
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    ulx = ulx < ule ? ule : ulx;
  }
#pragma omp atomic compare capture release
  {
    ulv = ulx;
    ulx = ulx == ule ? uld : ulx;
  }
#pragma omp atomic compare capture release
  {
    ulx = ulx > ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    ulx = ulx < ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture release
  {
    ulx = ulx == ule ? uld : ulx;
    ulv = ulx;
  }

#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    ulx = ulx > ule ? ule : ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    ulx = ulx < ule ? ule : ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ulv = ulx;
    ulx = ulx == ule ? uld : ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ulx = ulx > ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ulx = ulx < ule ? ule : ulx;
    ulv = ulx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ulx = ulx == ule ? uld : ulx;
    ulv = ulx;
  }

  return ulv;
}

long long llxevd() {
  long long llx, llv, lle, lld;

#pragma omp atomic compare capture
  {
    llv = llx;
    llx = llx > lle ? lle : llx;
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    llx = llx < lle ? lle : llx;
  }
#pragma omp atomic compare capture
  {
    llv = llx;
    llx = llx == lle ? lld : llx;
  }
#pragma omp atomic compare capture
  {
    llx = llx > lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    llx = llx < lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture
  {
    llx = llx == lle ? lld : llx;
    llv = llx;
  }

#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    llx = llx > lle ? lle : llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    llx = llx < lle ? lle : llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    llv = llx;
    llx = llx == lle ? lld : llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    llx = llx > lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    llx = llx < lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture acq_rel
  {
    llx = llx == lle ? lld : llx;
    llv = llx;
  }

#pragma omp atomic compare capture acquire
  {
    llv = llx;
    llx = llx > lle ? lle : llx;
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    llx = llx < lle ? lle : llx;
  }
#pragma omp atomic compare capture acquire
  {
    llv = llx;
    llx = llx == lle ? lld : llx;
  }
#pragma omp atomic compare capture acquire
  {
    llx = llx > lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    llx = llx < lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture acquire
  {
    llx = llx == lle ? lld : llx;
    llv = llx;
  }

#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    llx = llx > lle ? lle : llx;
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    llx = llx < lle ? lle : llx;
  }
#pragma omp atomic compare capture relaxed
  {
    llv = llx;
    llx = llx == lle ? lld : llx;
  }
#pragma omp atomic compare capture relaxed
  {
    llx = llx > lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    llx = llx < lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture relaxed
  {
    llx = llx == lle ? lld : llx;
    llv = llx;
  }

#pragma omp atomic compare capture release
  {
    llv = llx;
    llx = llx > lle ? lle : llx;
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    llx = llx < lle ? lle : llx;
  }
#pragma omp atomic compare capture release
  {
    llv = llx;
    llx = llx == lle ? lld : llx;
  }
#pragma omp atomic compare capture release
  {
    llx = llx > lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    llx = llx < lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture release
  {
    llx = llx == lle ? lld : llx;
    llv = llx;
  }

#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    llx = llx > lle ? lle : llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    llx = llx < lle ? lle : llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    llv = llx;
    llx = llx == lle ? lld : llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    llx = llx > lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    llx = llx < lle ? lle : llx;
    llv = llx;
  }
#pragma omp atomic compare capture seq_cst
  {
    llx = llx == lle ? lld : llx;
    llv = llx;
  }

  return llv;
}

unsigned long long ullxevd() {
  unsigned long long ullx, ullv, ulle, ulld;

#pragma omp atomic compare capture
  {
    ullv = ullx;
    ullx = ullx > ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    ullx = ullx < ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture
  {
    ullv = ullx;
    ullx = ullx == ulle ? ulld : ullx;
  }
#pragma omp atomic compare capture
  {
    ullx = ullx > ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    ullx = ullx < ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture
  {
    ullx = ullx == ulle ? ulld : ullx;
    ullv = ullx;
  }

#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    ullx = ullx > ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    ullx = ullx < ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ullv = ullx;
    ullx = ullx == ulle ? ulld : ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ullx = ullx > ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ullx = ullx < ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture acq_rel
  {
    ullx = ullx == ulle ? ulld : ullx;
    ullv = ullx;
  }

#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    ullx = ullx > ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    ullx = ullx < ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture acquire
  {
    ullv = ullx;
    ullx = ullx == ulle ? ulld : ullx;
  }
#pragma omp atomic compare capture acquire
  {
    ullx = ullx > ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    ullx = ullx < ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture acquire
  {
    ullx = ullx == ulle ? ulld : ullx;
    ullv = ullx;
  }

#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    ullx = ullx > ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    ullx = ullx < ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    ullv = ullx;
    ullx = ullx == ulle ? ulld : ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    ullx = ullx > ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    ullx = ullx < ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture relaxed
  {
    ullx = ullx == ulle ? ulld : ullx;
    ullv = ullx;
  }

#pragma omp atomic compare capture release
  {
    ullv = ullx;
    ullx = ullx > ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    ullx = ullx < ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture release
  {
    ullv = ullx;
    ullx = ullx == ulle ? ulld : ullx;
  }
#pragma omp atomic compare capture release
  {
    ullx = ullx > ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    ullx = ullx < ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture release
  {
    ullx = ullx == ulle ? ulld : ullx;
    ullv = ullx;
  }

#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    ullx = ullx > ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    ullx = ullx < ulle ? ulle : ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ullv = ullx;
    ullx = ullx == ulle ? ulld : ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ullx = ullx > ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ullx = ullx < ulle ? ulle : ullx;
    ullv = ullx;
  }
#pragma omp atomic compare capture seq_cst
  {
    ullx = ullx == ulle ? ulld : ullx;
    ullv = ullx;
  }

  return ullv;
}

float fxevd() {
  float fx, fv, fe, fd;

#pragma omp atomic compare capture
  {
    fv = fx;
    fx = fx > fe ? fe : fx;
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    fx = fx < fe ? fe : fx;
  }
#pragma omp atomic compare capture
  {
    fv = fx;
    fx = fx == fe ? fd : fx;
  }
#pragma omp atomic compare capture
  {
    fx = fx > fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    fx = fx < fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture
  {
    fx = fx == fe ? fd : fx;
    fv = fx;
  }

#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    fx = fx > fe ? fe : fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    fx = fx < fe ? fe : fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    fv = fx;
    fx = fx == fe ? fd : fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    fx = fx > fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    fx = fx < fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture acq_rel
  {
    fx = fx == fe ? fd : fx;
    fv = fx;
  }

#pragma omp atomic compare capture acquire
  {
    fv = fx;
    fx = fx > fe ? fe : fx;
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    fx = fx < fe ? fe : fx;
  }
#pragma omp atomic compare capture acquire
  {
    fv = fx;
    fx = fx == fe ? fd : fx;
  }
#pragma omp atomic compare capture acquire
  {
    fx = fx > fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    fx = fx < fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture acquire
  {
    fx = fx == fe ? fd : fx;
    fv = fx;
  }

#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    fx = fx > fe ? fe : fx;
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    fx = fx < fe ? fe : fx;
  }
#pragma omp atomic compare capture relaxed
  {
    fv = fx;
    fx = fx == fe ? fd : fx;
  }
#pragma omp atomic compare capture relaxed
  {
    fx = fx > fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    fx = fx < fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture relaxed
  {
    fx = fx == fe ? fd : fx;
    fv = fx;
  }

#pragma omp atomic compare capture release
  {
    fv = fx;
    fx = fx > fe ? fe : fx;
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    fx = fx < fe ? fe : fx;
  }
#pragma omp atomic compare capture release
  {
    fv = fx;
    fx = fx == fe ? fd : fx;
  }
#pragma omp atomic compare capture release
  {
    fx = fx > fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    fx = fx < fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture release
  {
    fx = fx == fe ? fd : fx;
    fv = fx;
  }

#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    fx = fx > fe ? fe : fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    fx = fx < fe ? fe : fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    fv = fx;
    fx = fx == fe ? fd : fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    fx = fx > fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    fx = fx < fe ? fe : fx;
    fv = fx;
  }
#pragma omp atomic compare capture seq_cst
  {
    fx = fx == fe ? fd : fx;
    fv = fx;
  }

  return fv;
}

double dxevd() {
  double dx, dv, de, dd;

#pragma omp atomic compare capture
  {
    dv = dx;
    dx = dx > de ? de : dx;
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    dx = dx < de ? de : dx;
  }
#pragma omp atomic compare capture
  {
    dv = dx;
    dx = dx == de ? dd : dx;
  }
#pragma omp atomic compare capture
  {
    dx = dx > de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    dx = dx < de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture
  {
    dx = dx == de ? dd : dx;
    dv = dx;
  }

#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    dx = dx > de ? de : dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    dx = dx < de ? de : dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    dv = dx;
    dx = dx == de ? dd : dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    dx = dx > de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    dx = dx < de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture acq_rel
  {
    dx = dx == de ? dd : dx;
    dv = dx;
  }

#pragma omp atomic compare capture acquire
  {
    dv = dx;
    dx = dx > de ? de : dx;
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    dx = dx < de ? de : dx;
  }
#pragma omp atomic compare capture acquire
  {
    dv = dx;
    dx = dx == de ? dd : dx;
  }
#pragma omp atomic compare capture acquire
  {
    dx = dx > de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    dx = dx < de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture acquire
  {
    dx = dx == de ? dd : dx;
    dv = dx;
  }

#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    dx = dx > de ? de : dx;
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    dx = dx < de ? de : dx;
  }
#pragma omp atomic compare capture relaxed
  {
    dv = dx;
    dx = dx == de ? dd : dx;
  }
#pragma omp atomic compare capture relaxed
  {
    dx = dx > de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    dx = dx < de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture relaxed
  {
    dx = dx == de ? dd : dx;
    dv = dx;
  }

#pragma omp atomic compare capture release
  {
    dv = dx;
    dx = dx > de ? de : dx;
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    dx = dx < de ? de : dx;
  }
#pragma omp atomic compare capture release
  {
    dv = dx;
    dx = dx == de ? dd : dx;
  }
#pragma omp atomic compare capture release
  {
    dx = dx > de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    dx = dx < de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture release
  {
    dx = dx == de ? dd : dx;
    dv = dx;
  }

#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    dx = dx > de ? de : dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    dx = dx < de ? de : dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    dv = dx;
    dx = dx == de ? dd : dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    dx = dx > de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    dx = dx < de ? de : dx;
    dv = dx;
  }
#pragma omp atomic compare capture seq_cst
  {
    dx = dx == de ? dd : dx;
    dv = dx;
  }

  return dv;
}

#endif
// CHECK-LABEL: @foo(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[CX:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CE:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CD:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCX:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCE:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCD:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[SX:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SE:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SD:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USX:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USE:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USD:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[IX:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[IE:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[ID:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIX:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIE:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UID:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[LX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[FX:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FE:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FD:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[DX:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DE:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DD:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP0]] monotonic, align 1
// CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP2]] monotonic, align 1
// CHECK-NEXT:    [[TMP4:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP5:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP4]] monotonic, align 1
// CHECK-NEXT:    [[TMP6:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP7:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP6]] monotonic, align 1
// CHECK-NEXT:    [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP8]] monotonic, align 1
// CHECK-NEXT:    [[TMP10:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP11:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP10]] monotonic, align 1
// CHECK-NEXT:    [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP12]] monotonic, align 1
// CHECK-NEXT:    [[TMP14:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP15:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP14]] monotonic, align 1
// CHECK-NEXT:    [[TMP16:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP17:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP16]], i8 [[TMP17]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP19:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP20:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP21:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP19]], i8 [[TMP20]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP22:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP23:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP24:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP22]], i8 [[TMP23]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP25:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP26:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP27:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP25]], i8 [[TMP26]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP28:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP29:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP28]] monotonic, align 1
// CHECK-NEXT:    [[TMP30:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP30]] monotonic, align 1
// CHECK-NEXT:    [[TMP32:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP33:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP32]] monotonic, align 1
// CHECK-NEXT:    [[TMP34:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP34]] monotonic, align 1
// CHECK-NEXT:    [[TMP36:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP37:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP36]] monotonic, align 1
// CHECK-NEXT:    [[TMP38:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP39:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP38]] monotonic, align 1
// CHECK-NEXT:    [[TMP40:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP41:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP40]] monotonic, align 1
// CHECK-NEXT:    [[TMP42:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP43:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP42]] monotonic, align 1
// CHECK-NEXT:    [[TMP44:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP45:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP46:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP44]], i8 [[TMP45]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP47:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP48:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP49:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP47]], i8 [[TMP48]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP50:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP51:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP52:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP50]], i8 [[TMP51]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP53:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP54:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP55:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP53]], i8 [[TMP54]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP56:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP56]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1:[0-9]+]])
// CHECK-NEXT:    [[TMP58:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP59:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP58]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP60:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP61:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP60]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP62:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP63:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP62]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP64:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP65:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP64]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP66:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP66]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP68:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP68]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP70:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP71:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP70]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP72:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP73:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP74:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP72]], i8 [[TMP73]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP75:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP76:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP77:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP75]], i8 [[TMP76]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP78:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP79:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP80:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP78]], i8 [[TMP79]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP81:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP82:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP83:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP81]], i8 [[TMP82]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP84:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP85:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP84]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP86:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP87:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP86]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP88:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP88]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP90]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP93:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP92]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP94:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP95:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP94]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP96]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP98:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP99:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP98]] acq_rel, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP101:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP102:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP100]], i8 [[TMP101]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP103:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP104:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP105:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP103]], i8 [[TMP104]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP106:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP107:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP108:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP106]], i8 [[TMP107]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP109:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP110:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP111:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP109]], i8 [[TMP110]] acq_rel acquire, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP112]] acquire, align 1
// CHECK-NEXT:    [[TMP114:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP115:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP114]] acquire, align 1
// CHECK-NEXT:    [[TMP116:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP117:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP116]] acquire, align 1
// CHECK-NEXT:    [[TMP118:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP118]] acquire, align 1
// CHECK-NEXT:    [[TMP120:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP121:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP120]] acquire, align 1
// CHECK-NEXT:    [[TMP122:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP122]] acquire, align 1
// CHECK-NEXT:    [[TMP124:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP125:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP124]] acquire, align 1
// CHECK-NEXT:    [[TMP126:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP127:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP126]] acquire, align 1
// CHECK-NEXT:    [[TMP128:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP129:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP130:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP128]], i8 [[TMP129]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP131:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP132:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP133:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP131]], i8 [[TMP132]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP134:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP135:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP136:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP134]], i8 [[TMP135]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP137:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP138:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP139:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP137]], i8 [[TMP138]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP140:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP141:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP140]] acquire, align 1
// CHECK-NEXT:    [[TMP142:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP143:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP142]] acquire, align 1
// CHECK-NEXT:    [[TMP144:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP145:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP144]] acquire, align 1
// CHECK-NEXT:    [[TMP146:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP147:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP146]] acquire, align 1
// CHECK-NEXT:    [[TMP148:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP149:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP148]] acquire, align 1
// CHECK-NEXT:    [[TMP150:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP151:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP150]] acquire, align 1
// CHECK-NEXT:    [[TMP152:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP153:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP152]] acquire, align 1
// CHECK-NEXT:    [[TMP154:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP155:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP154]] acquire, align 1
// CHECK-NEXT:    [[TMP156:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP157:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP158:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP156]], i8 [[TMP157]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP159:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP160:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP161:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP159]], i8 [[TMP160]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP162:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP163:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP164:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP162]], i8 [[TMP163]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP165:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP166:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP167:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP165]], i8 [[TMP166]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP168:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP169:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP168]] monotonic, align 1
// CHECK-NEXT:    [[TMP170:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP171:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP170]] monotonic, align 1
// CHECK-NEXT:    [[TMP172:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP173:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP172]] monotonic, align 1
// CHECK-NEXT:    [[TMP174:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP175:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP174]] monotonic, align 1
// CHECK-NEXT:    [[TMP176:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP177:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP176]] monotonic, align 1
// CHECK-NEXT:    [[TMP178:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP179:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP178]] monotonic, align 1
// CHECK-NEXT:    [[TMP180:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP181:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP180]] monotonic, align 1
// CHECK-NEXT:    [[TMP182:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP183:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP182]] monotonic, align 1
// CHECK-NEXT:    [[TMP184:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP185:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP186:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP184]], i8 [[TMP185]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP187:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP188:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP189:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP187]], i8 [[TMP188]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP190:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP191:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP192:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP190]], i8 [[TMP191]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP193:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP194:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP195:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP193]], i8 [[TMP194]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP196:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP197:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP196]] monotonic, align 1
// CHECK-NEXT:    [[TMP198:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP199:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP198]] monotonic, align 1
// CHECK-NEXT:    [[TMP200:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP201:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP200]] monotonic, align 1
// CHECK-NEXT:    [[TMP202:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP203:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP202]] monotonic, align 1
// CHECK-NEXT:    [[TMP204:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP205:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP204]] monotonic, align 1
// CHECK-NEXT:    [[TMP206:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP207:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP206]] monotonic, align 1
// CHECK-NEXT:    [[TMP208:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP209:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP208]] monotonic, align 1
// CHECK-NEXT:    [[TMP210:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP211:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP210]] monotonic, align 1
// CHECK-NEXT:    [[TMP212:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP213:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP214:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP212]], i8 [[TMP213]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP215:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP216:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP217:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP215]], i8 [[TMP216]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP218:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP219:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP220:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP218]], i8 [[TMP219]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP221:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP222:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP223:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP221]], i8 [[TMP222]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP224:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP225:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP224]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP226:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP227:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP226]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP228:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP229:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP228]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP230:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP231:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP230]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP232:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP233:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP232]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP234:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP235:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP234]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP236:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP237:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP236]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP238:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP239:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP238]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP240:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP241:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP242:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP240]], i8 [[TMP241]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP243:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP244:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP245:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP243]], i8 [[TMP244]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP246:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP247:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP248:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP246]], i8 [[TMP247]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP249:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP250:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP251:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP249]], i8 [[TMP250]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP252:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP253:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP252]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP254:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP255:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP254]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP256:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP257:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP256]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP258:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP259:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP258]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP260:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP261:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP260]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP262:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP263:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP262]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP264:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP265:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP264]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP266:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP267:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP266]] release, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP268:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP269:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP270:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP268]], i8 [[TMP269]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP271:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP272:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP273:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP271]], i8 [[TMP272]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP274:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP275:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP276:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP274]], i8 [[TMP275]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP277:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP278:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP279:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP277]], i8 [[TMP278]] release monotonic, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP280:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP281:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP280]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP282:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP283:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP282]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP284:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP285:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP284]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP286:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP287:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP286]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP288:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP289:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP288]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP290:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP291:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP290]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP292:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP293:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP292]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP294:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP295:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP294]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP296:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP297:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP298:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP296]], i8 [[TMP297]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP299:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP300:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP301:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP299]], i8 [[TMP300]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP302:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP303:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP304:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP302]], i8 [[TMP303]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP305:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP306:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP307:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP305]], i8 [[TMP306]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP308:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP309:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP308]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP310:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP311:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP310]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP312:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP313:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP312]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP314:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP315:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP314]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP316:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP317:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP316]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP318:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP319:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP318]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP320:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP321:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP320]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP322:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP323:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP322]] seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP324:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP325:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP326:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP324]], i8 [[TMP325]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP327:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP328:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP329:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP327]], i8 [[TMP328]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP330:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP331:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP332:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP330]], i8 [[TMP331]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP333:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP334:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP335:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP333]], i8 [[TMP334]] seq_cst seq_cst, align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP336:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP337:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP336]] monotonic, align 2
// CHECK-NEXT:    [[TMP338:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP339:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP338]] monotonic, align 2
// CHECK-NEXT:    [[TMP340:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP341:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP340]] monotonic, align 2
// CHECK-NEXT:    [[TMP342:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP343:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP342]] monotonic, align 2
// CHECK-NEXT:    [[TMP344:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP345:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP344]] monotonic, align 2
// CHECK-NEXT:    [[TMP346:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP347:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP346]] monotonic, align 2
// CHECK-NEXT:    [[TMP348:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP349:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP348]] monotonic, align 2
// CHECK-NEXT:    [[TMP350:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP351:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP350]] monotonic, align 2
// CHECK-NEXT:    [[TMP352:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP353:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP354:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP352]], i16 [[TMP353]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP355:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP356:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP357:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP355]], i16 [[TMP356]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP358:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP359:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP360:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP358]], i16 [[TMP359]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP361:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP362:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP363:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP361]], i16 [[TMP362]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP364:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP365:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP364]] monotonic, align 2
// CHECK-NEXT:    [[TMP366:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP367:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP366]] monotonic, align 2
// CHECK-NEXT:    [[TMP368:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP369:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP368]] monotonic, align 2
// CHECK-NEXT:    [[TMP370:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP371:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP370]] monotonic, align 2
// CHECK-NEXT:    [[TMP372:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP373:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP372]] monotonic, align 2
// CHECK-NEXT:    [[TMP374:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP375:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP374]] monotonic, align 2
// CHECK-NEXT:    [[TMP376:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP377:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP376]] monotonic, align 2
// CHECK-NEXT:    [[TMP378:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP379:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP378]] monotonic, align 2
// CHECK-NEXT:    [[TMP380:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP381:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP382:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP380]], i16 [[TMP381]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP383:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP384:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP385:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP383]], i16 [[TMP384]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP386:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP387:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP388:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP386]], i16 [[TMP387]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP389:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP390:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP391:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP389]], i16 [[TMP390]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP392:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP393:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP392]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP394:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP395:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP394]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP396:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP397:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP396]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP398:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP399:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP398]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP400:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP401:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP400]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP402:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP403:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP402]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP404:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP405:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP404]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP406:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP407:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP406]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP408:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP409:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP410:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP408]], i16 [[TMP409]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP411:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP412:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP413:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP411]], i16 [[TMP412]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP414:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP415:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP416:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP414]], i16 [[TMP415]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP417:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP418:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP419:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP417]], i16 [[TMP418]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP420:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP421:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP420]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP422:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP423:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP422]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP424:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP425:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP424]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP426:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP427:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP426]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP428:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP429:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP428]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP430:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP431:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP430]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP432:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP433:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP432]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP434:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP435:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP434]] acq_rel, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP436:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP437:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP438:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP436]], i16 [[TMP437]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP439:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP440:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP441:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP439]], i16 [[TMP440]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP442:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP443:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP444:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP442]], i16 [[TMP443]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP445:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP446:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP447:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP445]], i16 [[TMP446]] acq_rel acquire, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP448:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP449:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP448]] acquire, align 2
// CHECK-NEXT:    [[TMP450:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP451:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP450]] acquire, align 2
// CHECK-NEXT:    [[TMP452:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP453:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP452]] acquire, align 2
// CHECK-NEXT:    [[TMP454:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP455:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP454]] acquire, align 2
// CHECK-NEXT:    [[TMP456:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP457:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP456]] acquire, align 2
// CHECK-NEXT:    [[TMP458:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP459:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP458]] acquire, align 2
// CHECK-NEXT:    [[TMP460:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP461:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP460]] acquire, align 2
// CHECK-NEXT:    [[TMP462:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP463:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP462]] acquire, align 2
// CHECK-NEXT:    [[TMP464:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP465:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP466:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP464]], i16 [[TMP465]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP467:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP468:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP469:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP467]], i16 [[TMP468]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP470:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP471:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP472:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP470]], i16 [[TMP471]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP473:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP474:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP475:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP473]], i16 [[TMP474]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP476:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP477:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP476]] acquire, align 2
// CHECK-NEXT:    [[TMP478:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP479:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP478]] acquire, align 2
// CHECK-NEXT:    [[TMP480:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP481:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP480]] acquire, align 2
// CHECK-NEXT:    [[TMP482:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP483:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP482]] acquire, align 2
// CHECK-NEXT:    [[TMP484:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP485:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP484]] acquire, align 2
// CHECK-NEXT:    [[TMP486:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP487:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP486]] acquire, align 2
// CHECK-NEXT:    [[TMP488:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP489:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP488]] acquire, align 2
// CHECK-NEXT:    [[TMP490:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP491:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP490]] acquire, align 2
// CHECK-NEXT:    [[TMP492:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP493:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP494:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP492]], i16 [[TMP493]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP495:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP496:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP497:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP495]], i16 [[TMP496]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP498:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP499:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP500:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP498]], i16 [[TMP499]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP501:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP502:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP503:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP501]], i16 [[TMP502]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP504:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP505:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP504]] monotonic, align 2
// CHECK-NEXT:    [[TMP506:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP507:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP506]] monotonic, align 2
// CHECK-NEXT:    [[TMP508:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP509:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP508]] monotonic, align 2
// CHECK-NEXT:    [[TMP510:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP511:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP510]] monotonic, align 2
// CHECK-NEXT:    [[TMP512:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP513:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP512]] monotonic, align 2
// CHECK-NEXT:    [[TMP514:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP515:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP514]] monotonic, align 2
// CHECK-NEXT:    [[TMP516:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP517:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP516]] monotonic, align 2
// CHECK-NEXT:    [[TMP518:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP519:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP518]] monotonic, align 2
// CHECK-NEXT:    [[TMP520:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP521:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP522:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP520]], i16 [[TMP521]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP523:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP524:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP525:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP523]], i16 [[TMP524]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP526:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP527:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP528:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP526]], i16 [[TMP527]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP529:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP530:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP531:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP529]], i16 [[TMP530]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP532:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP533:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP532]] monotonic, align 2
// CHECK-NEXT:    [[TMP534:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP535:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP534]] monotonic, align 2
// CHECK-NEXT:    [[TMP536:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP537:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP536]] monotonic, align 2
// CHECK-NEXT:    [[TMP538:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP539:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP538]] monotonic, align 2
// CHECK-NEXT:    [[TMP540:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP541:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP540]] monotonic, align 2
// CHECK-NEXT:    [[TMP542:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP543:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP542]] monotonic, align 2
// CHECK-NEXT:    [[TMP544:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP545:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP544]] monotonic, align 2
// CHECK-NEXT:    [[TMP546:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP547:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP546]] monotonic, align 2
// CHECK-NEXT:    [[TMP548:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP549:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP550:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP548]], i16 [[TMP549]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP551:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP552:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP553:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP551]], i16 [[TMP552]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP554:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP555:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP556:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP554]], i16 [[TMP555]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP557:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP558:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP559:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP557]], i16 [[TMP558]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP560:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP561:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP560]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP562:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP563:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP562]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP564:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP565:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP564]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP566:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP567:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP566]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP568:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP569:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP568]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP570:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP571:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP570]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP572:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP573:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP572]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP574:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP575:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP574]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP576:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP577:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP578:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP576]], i16 [[TMP577]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP579:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP580:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP581:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP579]], i16 [[TMP580]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP582:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP583:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP584:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP582]], i16 [[TMP583]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP585:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP586:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP587:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP585]], i16 [[TMP586]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP588:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP589:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP588]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP590:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP591:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP590]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP592:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP593:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP592]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP594:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP595:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP594]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP596:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP597:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP596]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP598:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP599:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP598]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP600:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP601:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP600]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP602:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP603:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP602]] release, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP604:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP605:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP606:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP604]], i16 [[TMP605]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP607:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP608:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP609:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP607]], i16 [[TMP608]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP610:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP611:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP612:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP610]], i16 [[TMP611]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP613:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP614:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP615:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP613]], i16 [[TMP614]] release monotonic, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP616:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP617:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP616]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP618:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP619:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP618]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP620:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP621:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP620]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP622:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP623:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP622]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP624:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP625:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP624]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP626:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP627:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP626]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP628:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP629:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP628]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP630:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP631:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP630]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP632:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP633:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP634:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP632]], i16 [[TMP633]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP635:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP636:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP637:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP635]], i16 [[TMP636]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP638:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP639:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP640:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP638]], i16 [[TMP639]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP641:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP642:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP643:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP641]], i16 [[TMP642]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP644:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP645:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP644]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP646:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP647:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP646]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP648:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP649:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP648]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP650:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP651:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP650]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP652:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP653:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP652]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP654:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP655:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP654]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP656:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP657:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP656]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP658:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP659:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP658]] seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP660:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP661:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP662:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP660]], i16 [[TMP661]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP663:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP664:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP665:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP663]], i16 [[TMP664]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP666:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP667:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP668:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP666]], i16 [[TMP667]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP669:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP670:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP671:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP669]], i16 [[TMP670]] seq_cst seq_cst, align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP672:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP673:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP672]] monotonic, align 4
// CHECK-NEXT:    [[TMP674:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP675:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP674]] monotonic, align 4
// CHECK-NEXT:    [[TMP676:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP677:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP676]] monotonic, align 4
// CHECK-NEXT:    [[TMP678:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP679:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP678]] monotonic, align 4
// CHECK-NEXT:    [[TMP680:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP681:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP680]] monotonic, align 4
// CHECK-NEXT:    [[TMP682:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP683:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP682]] monotonic, align 4
// CHECK-NEXT:    [[TMP684:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP685:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP684]] monotonic, align 4
// CHECK-NEXT:    [[TMP686:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP687:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP686]] monotonic, align 4
// CHECK-NEXT:    [[TMP688:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP689:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP690:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP688]], i32 [[TMP689]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP691:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP692:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP693:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP691]], i32 [[TMP692]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP694:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP695:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP696:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP694]], i32 [[TMP695]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP697:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP698:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP699:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP697]], i32 [[TMP698]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP700:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP701:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP700]] monotonic, align 4
// CHECK-NEXT:    [[TMP702:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP703:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP702]] monotonic, align 4
// CHECK-NEXT:    [[TMP704:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP705:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP704]] monotonic, align 4
// CHECK-NEXT:    [[TMP706:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP707:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP706]] monotonic, align 4
// CHECK-NEXT:    [[TMP708:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP709:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP708]] monotonic, align 4
// CHECK-NEXT:    [[TMP710:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP711:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP710]] monotonic, align 4
// CHECK-NEXT:    [[TMP712:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP713:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP712]] monotonic, align 4
// CHECK-NEXT:    [[TMP714:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP715:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP714]] monotonic, align 4
// CHECK-NEXT:    [[TMP716:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP717:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP718:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP716]], i32 [[TMP717]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP719:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP720:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP721:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP719]], i32 [[TMP720]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP722:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP723:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP724:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP722]], i32 [[TMP723]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP725:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP726:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP727:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP725]], i32 [[TMP726]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP728:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP729:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP728]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP730:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP731:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP730]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP732:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP733:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP732]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP734:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP735:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP734]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP736:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP737:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP736]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP738:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP739:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP738]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP740:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP741:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP740]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP742:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP743:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP742]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP744:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP745:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP746:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP744]], i32 [[TMP745]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP747:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP748:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP749:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP747]], i32 [[TMP748]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP750:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP751:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP752:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP750]], i32 [[TMP751]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP753:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP754:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP755:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP753]], i32 [[TMP754]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP756:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP757:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP756]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP758:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP759:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP758]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP760:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP761:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP760]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP762:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP763:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP762]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP764:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP765:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP764]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP766:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP767:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP766]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP768:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP769:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP768]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP770:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP771:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP770]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP772:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP773:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP774:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP772]], i32 [[TMP773]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP775:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP776:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP777:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP775]], i32 [[TMP776]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP778:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP779:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP780:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP778]], i32 [[TMP779]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP781:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP782:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP783:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP781]], i32 [[TMP782]] acq_rel acquire, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP784:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP785:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP784]] acquire, align 4
// CHECK-NEXT:    [[TMP786:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP787:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP786]] acquire, align 4
// CHECK-NEXT:    [[TMP788:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP789:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP788]] acquire, align 4
// CHECK-NEXT:    [[TMP790:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP791:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP790]] acquire, align 4
// CHECK-NEXT:    [[TMP792:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP793:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP792]] acquire, align 4
// CHECK-NEXT:    [[TMP794:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP795:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP794]] acquire, align 4
// CHECK-NEXT:    [[TMP796:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP797:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP796]] acquire, align 4
// CHECK-NEXT:    [[TMP798:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP799:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP798]] acquire, align 4
// CHECK-NEXT:    [[TMP800:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP801:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP802:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP800]], i32 [[TMP801]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP803:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP804:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP805:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP803]], i32 [[TMP804]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP806:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP807:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP808:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP806]], i32 [[TMP807]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP809:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP810:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP811:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP809]], i32 [[TMP810]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP812:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP813:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP812]] acquire, align 4
// CHECK-NEXT:    [[TMP814:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP815:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP814]] acquire, align 4
// CHECK-NEXT:    [[TMP816:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP817:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP816]] acquire, align 4
// CHECK-NEXT:    [[TMP818:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP819:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP818]] acquire, align 4
// CHECK-NEXT:    [[TMP820:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP821:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP820]] acquire, align 4
// CHECK-NEXT:    [[TMP822:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP823:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP822]] acquire, align 4
// CHECK-NEXT:    [[TMP824:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP825:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP824]] acquire, align 4
// CHECK-NEXT:    [[TMP826:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP827:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP826]] acquire, align 4
// CHECK-NEXT:    [[TMP828:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP829:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP830:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP828]], i32 [[TMP829]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP831:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP832:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP833:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP831]], i32 [[TMP832]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP834:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP835:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP836:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP834]], i32 [[TMP835]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP837:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP838:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP839:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP837]], i32 [[TMP838]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP840:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP841:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP840]] monotonic, align 4
// CHECK-NEXT:    [[TMP842:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP843:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP842]] monotonic, align 4
// CHECK-NEXT:    [[TMP844:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP845:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP844]] monotonic, align 4
// CHECK-NEXT:    [[TMP846:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP847:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP846]] monotonic, align 4
// CHECK-NEXT:    [[TMP848:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP849:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP848]] monotonic, align 4
// CHECK-NEXT:    [[TMP850:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP851:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP850]] monotonic, align 4
// CHECK-NEXT:    [[TMP852:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP853:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP852]] monotonic, align 4
// CHECK-NEXT:    [[TMP854:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP855:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP854]] monotonic, align 4
// CHECK-NEXT:    [[TMP856:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP857:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP858:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP856]], i32 [[TMP857]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP859:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP860:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP861:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP859]], i32 [[TMP860]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP862:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP863:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP864:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP862]], i32 [[TMP863]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP865:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP866:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP867:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP865]], i32 [[TMP866]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP868:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP869:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP868]] monotonic, align 4
// CHECK-NEXT:    [[TMP870:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP871:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP870]] monotonic, align 4
// CHECK-NEXT:    [[TMP872:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP873:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP872]] monotonic, align 4
// CHECK-NEXT:    [[TMP874:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP875:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP874]] monotonic, align 4
// CHECK-NEXT:    [[TMP876:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP877:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP876]] monotonic, align 4
// CHECK-NEXT:    [[TMP878:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP879:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP878]] monotonic, align 4
// CHECK-NEXT:    [[TMP880:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP881:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP880]] monotonic, align 4
// CHECK-NEXT:    [[TMP882:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP883:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP882]] monotonic, align 4
// CHECK-NEXT:    [[TMP884:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP885:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP886:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP884]], i32 [[TMP885]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP887:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP888:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP889:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP887]], i32 [[TMP888]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP890:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP891:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP892:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP890]], i32 [[TMP891]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP893:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP894:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP895:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP893]], i32 [[TMP894]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP896:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP897:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP896]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP898:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP899:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP898]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP900:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP901:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP900]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP902:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP903:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP902]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP904:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP905:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP904]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP906:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP907:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP906]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP908:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP909:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP908]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP910:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP911:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP910]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP912:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP913:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP914:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP912]], i32 [[TMP913]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP915:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP916:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP917:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP915]], i32 [[TMP916]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP918:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP919:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP920:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP918]], i32 [[TMP919]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP921:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP922:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP923:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP921]], i32 [[TMP922]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP924:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP925:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP924]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP926:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP927:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP926]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP928:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP929:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP928]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP930:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP931:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP930]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP932:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP933:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP932]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP934:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP935:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP934]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP936:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP937:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP936]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP938:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP939:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP938]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP940:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP941:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP942:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP940]], i32 [[TMP941]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP943:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP944:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP945:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP943]], i32 [[TMP944]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP946:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP947:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP948:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP946]], i32 [[TMP947]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP949:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP950:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP951:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP949]], i32 [[TMP950]] release monotonic, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP952:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP953:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP952]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP954:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP955:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP954]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP956:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP957:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP956]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP958:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP959:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP958]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP960:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP961:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP960]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP962:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP963:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP962]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP964:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP965:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP964]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP966:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP967:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP966]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP968:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP969:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP970:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP968]], i32 [[TMP969]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP971:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP972:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP973:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP971]], i32 [[TMP972]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP974:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP975:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP976:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP974]], i32 [[TMP975]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP977:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP978:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP979:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP977]], i32 [[TMP978]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP980:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP981:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP980]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP982:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP983:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP982]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP984:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP985:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP984]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP986:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP987:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP986]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP988:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP989:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP988]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP990:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP991:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP990]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP992:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP993:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP992]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP994:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP995:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP994]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP996:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP997:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP998:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP996]], i32 [[TMP997]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP999:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP1000:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP1001:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP999]], i32 [[TMP1000]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1002:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP1003:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP1004:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP1002]], i32 [[TMP1003]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1005:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP1006:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP1007:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP1005]], i32 [[TMP1006]] seq_cst seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1008:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1009:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1008]] monotonic, align 8
// CHECK-NEXT:    [[TMP1010:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1011:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1010]] monotonic, align 8
// CHECK-NEXT:    [[TMP1012:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1013:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1012]] monotonic, align 8
// CHECK-NEXT:    [[TMP1014:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1015:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1014]] monotonic, align 8
// CHECK-NEXT:    [[TMP1016:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1017:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1016]] monotonic, align 8
// CHECK-NEXT:    [[TMP1018:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1019:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1018]] monotonic, align 8
// CHECK-NEXT:    [[TMP1020:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1021:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1020]] monotonic, align 8
// CHECK-NEXT:    [[TMP1022:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1023:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1022]] monotonic, align 8
// CHECK-NEXT:    [[TMP1024:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1025:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1026:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1024]], i64 [[TMP1025]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1027:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1028:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1029:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1027]], i64 [[TMP1028]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1030:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1031:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1032:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1030]], i64 [[TMP1031]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1033:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1034:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1035:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1033]], i64 [[TMP1034]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1036:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1037:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1036]] monotonic, align 8
// CHECK-NEXT:    [[TMP1038:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1039:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1038]] monotonic, align 8
// CHECK-NEXT:    [[TMP1040:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1041:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1040]] monotonic, align 8
// CHECK-NEXT:    [[TMP1042:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1043:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1042]] monotonic, align 8
// CHECK-NEXT:    [[TMP1044:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1045:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1044]] monotonic, align 8
// CHECK-NEXT:    [[TMP1046:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1047:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1046]] monotonic, align 8
// CHECK-NEXT:    [[TMP1048:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1049:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1048]] monotonic, align 8
// CHECK-NEXT:    [[TMP1050:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1051:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1050]] monotonic, align 8
// CHECK-NEXT:    [[TMP1052:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1053:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1054:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1052]], i64 [[TMP1053]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1055:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1056:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1057:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1055]], i64 [[TMP1056]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1058:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1059:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1060:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1058]], i64 [[TMP1059]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1061:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1062:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1063:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1061]], i64 [[TMP1062]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1064:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1065:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1064]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1066:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1067:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1066]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1068:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1069:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1068]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1070:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1071:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1070]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1072:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1073:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1072]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1074:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1075:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1074]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1076:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1077:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1076]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1078:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1079:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1078]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1080:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1081:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1082:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1080]], i64 [[TMP1081]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1083:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1084:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1085:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1083]], i64 [[TMP1084]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1086:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1087:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1088:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1086]], i64 [[TMP1087]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1089:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1090:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1091:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1089]], i64 [[TMP1090]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1092:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1093:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1092]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1094:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1095:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1094]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1096:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1097:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1096]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1098:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1099:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1098]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1100:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1101:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1100]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1102:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1103:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1102]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1104:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1105:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1104]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1106:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1107:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1106]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1108:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1109:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1110:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1108]], i64 [[TMP1109]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1111:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1112:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1113:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1111]], i64 [[TMP1112]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1114:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1115:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1116:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1114]], i64 [[TMP1115]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1117:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1118:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1119:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1117]], i64 [[TMP1118]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1120:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1121:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1120]] acquire, align 8
// CHECK-NEXT:    [[TMP1122:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1123:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1122]] acquire, align 8
// CHECK-NEXT:    [[TMP1124:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1125:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1124]] acquire, align 8
// CHECK-NEXT:    [[TMP1126:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1127:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1126]] acquire, align 8
// CHECK-NEXT:    [[TMP1128:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1129:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1128]] acquire, align 8
// CHECK-NEXT:    [[TMP1130:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1131:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1130]] acquire, align 8
// CHECK-NEXT:    [[TMP1132:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1133:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1132]] acquire, align 8
// CHECK-NEXT:    [[TMP1134:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1135:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1134]] acquire, align 8
// CHECK-NEXT:    [[TMP1136:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1137:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1138:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1136]], i64 [[TMP1137]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1139:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1140:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1141:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1139]], i64 [[TMP1140]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1142:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1143:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1144:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1142]], i64 [[TMP1143]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1145:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1146:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1147:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1145]], i64 [[TMP1146]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1148:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1149:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1148]] acquire, align 8
// CHECK-NEXT:    [[TMP1150:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1151:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1150]] acquire, align 8
// CHECK-NEXT:    [[TMP1152:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1153:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1152]] acquire, align 8
// CHECK-NEXT:    [[TMP1154:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1155:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1154]] acquire, align 8
// CHECK-NEXT:    [[TMP1156:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1157:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1156]] acquire, align 8
// CHECK-NEXT:    [[TMP1158:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1159:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1158]] acquire, align 8
// CHECK-NEXT:    [[TMP1160:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1161:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1160]] acquire, align 8
// CHECK-NEXT:    [[TMP1162:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1163:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1162]] acquire, align 8
// CHECK-NEXT:    [[TMP1164:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1165:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1166:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1164]], i64 [[TMP1165]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1167:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1168:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1169:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1167]], i64 [[TMP1168]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1170:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1171:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1172:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1170]], i64 [[TMP1171]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1173:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1174:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1175:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1173]], i64 [[TMP1174]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1176:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1177:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1176]] monotonic, align 8
// CHECK-NEXT:    [[TMP1178:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1179:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1178]] monotonic, align 8
// CHECK-NEXT:    [[TMP1180:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1181:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1180]] monotonic, align 8
// CHECK-NEXT:    [[TMP1182:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1183:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1182]] monotonic, align 8
// CHECK-NEXT:    [[TMP1184:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1185:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1184]] monotonic, align 8
// CHECK-NEXT:    [[TMP1186:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1187:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1186]] monotonic, align 8
// CHECK-NEXT:    [[TMP1188:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1189:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1188]] monotonic, align 8
// CHECK-NEXT:    [[TMP1190:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1191:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1190]] monotonic, align 8
// CHECK-NEXT:    [[TMP1192:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1193:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1194:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1192]], i64 [[TMP1193]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1195:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1196:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1197:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1195]], i64 [[TMP1196]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1198:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1199:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1200:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1198]], i64 [[TMP1199]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1201:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1202:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1203:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1201]], i64 [[TMP1202]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1204:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1205:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1204]] monotonic, align 8
// CHECK-NEXT:    [[TMP1206:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1207:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1206]] monotonic, align 8
// CHECK-NEXT:    [[TMP1208:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1209:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1208]] monotonic, align 8
// CHECK-NEXT:    [[TMP1210:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1211:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1210]] monotonic, align 8
// CHECK-NEXT:    [[TMP1212:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1213:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1212]] monotonic, align 8
// CHECK-NEXT:    [[TMP1214:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1215:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1214]] monotonic, align 8
// CHECK-NEXT:    [[TMP1216:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1217:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1216]] monotonic, align 8
// CHECK-NEXT:    [[TMP1218:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1219:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1218]] monotonic, align 8
// CHECK-NEXT:    [[TMP1220:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1221:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1222:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1220]], i64 [[TMP1221]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1223:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1224:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1225:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1223]], i64 [[TMP1224]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1226:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1227:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1228:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1226]], i64 [[TMP1227]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1229:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1230:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1231:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1229]], i64 [[TMP1230]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1232:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1233:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1232]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1234:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1235:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1234]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1236:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1237:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1236]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1238:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1239:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1238]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1240:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1241:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1240]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1242:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1243:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1242]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1244:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1245:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1244]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1246:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1247:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1246]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1248:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1249:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1250:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1248]], i64 [[TMP1249]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1251:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1252:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1253:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1251]], i64 [[TMP1252]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1254:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1255:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1256:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1254]], i64 [[TMP1255]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1257:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1258:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1259:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1257]], i64 [[TMP1258]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1260:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1261:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1260]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1262:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1263:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1262]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1264:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1265:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1264]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1266:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1267:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1266]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1268:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1269:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1268]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1270:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1271:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1270]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1272:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1273:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1272]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1274:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1275:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1274]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1276:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1277:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1278:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1276]], i64 [[TMP1277]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1279:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1280:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1281:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1279]], i64 [[TMP1280]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1282:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1283:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1284:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1282]], i64 [[TMP1283]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1285:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1286:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1287:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1285]], i64 [[TMP1286]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1288:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1289:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1288]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1290:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1291:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1290]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1292:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1293:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1292]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1294:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1295:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1294]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1296:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1297:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1296]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1298:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1299:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1298]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1300:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1301:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1300]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1302:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1303:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1302]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1304:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1305:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1306:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1304]], i64 [[TMP1305]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1307:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1308:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1309:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1307]], i64 [[TMP1308]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1310:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1311:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1312:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1310]], i64 [[TMP1311]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1313:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1314:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP1315:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1313]], i64 [[TMP1314]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1316:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1317:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1316]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1318:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1319:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1318]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1320:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1321:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1320]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1322:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1323:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1322]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1324:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1325:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1324]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1326:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1327:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1326]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1328:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1329:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1328]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1330:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1331:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1330]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1332:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1333:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1334:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1332]], i64 [[TMP1333]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1335:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1336:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1337:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1335]], i64 [[TMP1336]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1338:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1339:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1340:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1338]], i64 [[TMP1339]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1341:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1342:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP1343:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1341]], i64 [[TMP1342]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1344:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1345:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1344]] monotonic, align 8
// CHECK-NEXT:    [[TMP1346:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1347:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1346]] monotonic, align 8
// CHECK-NEXT:    [[TMP1348:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1349:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1348]] monotonic, align 8
// CHECK-NEXT:    [[TMP1350:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1351:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1350]] monotonic, align 8
// CHECK-NEXT:    [[TMP1352:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1353:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1352]] monotonic, align 8
// CHECK-NEXT:    [[TMP1354:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1355:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1354]] monotonic, align 8
// CHECK-NEXT:    [[TMP1356:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1357:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1356]] monotonic, align 8
// CHECK-NEXT:    [[TMP1358:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1359:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1358]] monotonic, align 8
// CHECK-NEXT:    [[TMP1360:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1361:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1362:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1360]], i64 [[TMP1361]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1363:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1364:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1365:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1363]], i64 [[TMP1364]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1366:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1367:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1368:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1366]], i64 [[TMP1367]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1369:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1370:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1371:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1369]], i64 [[TMP1370]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1372:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1373:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1372]] monotonic, align 8
// CHECK-NEXT:    [[TMP1374:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1375:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1374]] monotonic, align 8
// CHECK-NEXT:    [[TMP1376:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1377:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1376]] monotonic, align 8
// CHECK-NEXT:    [[TMP1378:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1379:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1378]] monotonic, align 8
// CHECK-NEXT:    [[TMP1380:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1381:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1380]] monotonic, align 8
// CHECK-NEXT:    [[TMP1382:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1383:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1382]] monotonic, align 8
// CHECK-NEXT:    [[TMP1384:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1385:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1384]] monotonic, align 8
// CHECK-NEXT:    [[TMP1386:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1387:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1386]] monotonic, align 8
// CHECK-NEXT:    [[TMP1388:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1389:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1390:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1388]], i64 [[TMP1389]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1391:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1392:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1393:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1391]], i64 [[TMP1392]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1394:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1395:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1396:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1394]], i64 [[TMP1395]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1397:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1398:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1399:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1397]], i64 [[TMP1398]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1400:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1401:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1400]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1402:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1403:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1402]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1404:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1405:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1404]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1406:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1407:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1406]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1408:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1409:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1408]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1410:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1411:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1410]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1412:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1413:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1412]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1414:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1415:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1414]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1416:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1417:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1418:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1416]], i64 [[TMP1417]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1419:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1420:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1421:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1419]], i64 [[TMP1420]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1422:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1423:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1424:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1422]], i64 [[TMP1423]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1425:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1426:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1427:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1425]], i64 [[TMP1426]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1428:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1429:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1428]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1430:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1431:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1430]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1432:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1433:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1432]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1434:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1435:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1434]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1436:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1437:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1436]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1438:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1439:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1438]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1440:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1441:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1440]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1442:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1443:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1442]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1444:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1445:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1446:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1444]], i64 [[TMP1445]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1447:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1448:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1449:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1447]], i64 [[TMP1448]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1450:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1451:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1452:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1450]], i64 [[TMP1451]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1453:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1454:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1455:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1453]], i64 [[TMP1454]] acq_rel acquire, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1456:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1457:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1456]] acquire, align 8
// CHECK-NEXT:    [[TMP1458:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1459:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1458]] acquire, align 8
// CHECK-NEXT:    [[TMP1460:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1461:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1460]] acquire, align 8
// CHECK-NEXT:    [[TMP1462:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1463:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1462]] acquire, align 8
// CHECK-NEXT:    [[TMP1464:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1465:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1464]] acquire, align 8
// CHECK-NEXT:    [[TMP1466:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1467:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1466]] acquire, align 8
// CHECK-NEXT:    [[TMP1468:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1469:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1468]] acquire, align 8
// CHECK-NEXT:    [[TMP1470:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1471:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1470]] acquire, align 8
// CHECK-NEXT:    [[TMP1472:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1473:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1474:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1472]], i64 [[TMP1473]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1475:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1476:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1477:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1475]], i64 [[TMP1476]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1478:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1479:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1480:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1478]], i64 [[TMP1479]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1481:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1482:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1483:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1481]], i64 [[TMP1482]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1484:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1485:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1484]] acquire, align 8
// CHECK-NEXT:    [[TMP1486:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1487:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1486]] acquire, align 8
// CHECK-NEXT:    [[TMP1488:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1489:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1488]] acquire, align 8
// CHECK-NEXT:    [[TMP1490:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1491:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1490]] acquire, align 8
// CHECK-NEXT:    [[TMP1492:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1493:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1492]] acquire, align 8
// CHECK-NEXT:    [[TMP1494:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1495:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1494]] acquire, align 8
// CHECK-NEXT:    [[TMP1496:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1497:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1496]] acquire, align 8
// CHECK-NEXT:    [[TMP1498:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1499:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1498]] acquire, align 8
// CHECK-NEXT:    [[TMP1500:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1501:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1502:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1500]], i64 [[TMP1501]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1503:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1504:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1505:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1503]], i64 [[TMP1504]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1506:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1507:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1508:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1506]], i64 [[TMP1507]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1509:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1510:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1511:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1509]], i64 [[TMP1510]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP1512:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1513:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1512]] monotonic, align 8
// CHECK-NEXT:    [[TMP1514:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1515:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1514]] monotonic, align 8
// CHECK-NEXT:    [[TMP1516:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1517:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1516]] monotonic, align 8
// CHECK-NEXT:    [[TMP1518:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1519:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1518]] monotonic, align 8
// CHECK-NEXT:    [[TMP1520:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1521:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1520]] monotonic, align 8
// CHECK-NEXT:    [[TMP1522:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1523:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1522]] monotonic, align 8
// CHECK-NEXT:    [[TMP1524:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1525:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1524]] monotonic, align 8
// CHECK-NEXT:    [[TMP1526:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1527:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1526]] monotonic, align 8
// CHECK-NEXT:    [[TMP1528:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1529:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1530:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1528]], i64 [[TMP1529]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1531:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1532:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1533:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1531]], i64 [[TMP1532]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1534:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1535:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1536:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1534]], i64 [[TMP1535]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1537:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1538:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1539:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1537]], i64 [[TMP1538]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1540:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1541:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1540]] monotonic, align 8
// CHECK-NEXT:    [[TMP1542:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1543:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1542]] monotonic, align 8
// CHECK-NEXT:    [[TMP1544:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1545:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1544]] monotonic, align 8
// CHECK-NEXT:    [[TMP1546:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1547:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1546]] monotonic, align 8
// CHECK-NEXT:    [[TMP1548:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1549:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1548]] monotonic, align 8
// CHECK-NEXT:    [[TMP1550:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1551:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1550]] monotonic, align 8
// CHECK-NEXT:    [[TMP1552:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1553:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1552]] monotonic, align 8
// CHECK-NEXT:    [[TMP1554:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1555:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1554]] monotonic, align 8
// CHECK-NEXT:    [[TMP1556:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1557:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1558:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1556]], i64 [[TMP1557]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1559:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1560:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1561:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1559]], i64 [[TMP1560]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1562:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1563:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1564:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1562]], i64 [[TMP1563]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1565:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1566:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1567:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1565]], i64 [[TMP1566]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP1568:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1569:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1568]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1570:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1571:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1570]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1572:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1573:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1572]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1574:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1575:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1574]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1576:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1577:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1576]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1578:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1579:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1578]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1580:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1581:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1580]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1582:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1583:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1582]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1584:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1585:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1586:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1584]], i64 [[TMP1585]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1587:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1588:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1589:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1587]], i64 [[TMP1588]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1590:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1591:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1592:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1590]], i64 [[TMP1591]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1593:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1594:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1595:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1593]], i64 [[TMP1594]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1596:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1597:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1596]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1598:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1599:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1598]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1600:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1601:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1600]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1602:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1603:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1602]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1604:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1605:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1604]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1606:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1607:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1606]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1608:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1609:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1608]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1610:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1611:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1610]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1612:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1613:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1614:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1612]], i64 [[TMP1613]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1615:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1616:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1617:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1615]], i64 [[TMP1616]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1618:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1619:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1620:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1618]], i64 [[TMP1619]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1621:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1622:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1623:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1621]], i64 [[TMP1622]] release monotonic, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1624:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1625:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1624]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1626:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1627:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1626]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1628:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1629:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1628]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1630:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1631:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1630]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1632:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1633:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1632]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1634:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1635:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1634]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1636:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1637:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1636]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1638:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1639:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1638]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1640:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1641:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1642:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1640]], i64 [[TMP1641]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1643:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1644:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1645:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1643]], i64 [[TMP1644]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1646:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1647:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1648:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1646]], i64 [[TMP1647]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1649:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1650:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP1651:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1649]], i64 [[TMP1650]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1652:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1653:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1652]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1654:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1655:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1654]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1656:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1657:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1656]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1658:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1659:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1658]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1660:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1661:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1660]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1662:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1663:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1662]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1664:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1665:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1664]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1666:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1667:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1666]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1668:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1669:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1670:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1668]], i64 [[TMP1669]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1671:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1672:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1673:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1671]], i64 [[TMP1672]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1674:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1675:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1676:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1674]], i64 [[TMP1675]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1677:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1678:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP1679:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1677]], i64 [[TMP1678]] seq_cst seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1680:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1681:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1680]] monotonic, align 4
// CHECK-NEXT:    [[TMP1682:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1683:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1682]] monotonic, align 4
// CHECK-NEXT:    [[TMP1684:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1685:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1684]] monotonic, align 4
// CHECK-NEXT:    [[TMP1686:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1687:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1686]] monotonic, align 4
// CHECK-NEXT:    [[TMP1688:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1689:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1688]] monotonic, align 4
// CHECK-NEXT:    [[TMP1690:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1691:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1690]] monotonic, align 4
// CHECK-NEXT:    [[TMP1692:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1693:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1692]] monotonic, align 4
// CHECK-NEXT:    [[TMP1694:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1695:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1694]] monotonic, align 4
// CHECK-NEXT:    [[TMP1696:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1697:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1696]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1698:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1699:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1698]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1700:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1701:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1700]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1702:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1703:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1702]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1704:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1705:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1704]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1706:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1707:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1706]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1708:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1709:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1708]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1710:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1711:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1710]] acq_rel, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1712:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1713:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1712]] acquire, align 4
// CHECK-NEXT:    [[TMP1714:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1715:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1714]] acquire, align 4
// CHECK-NEXT:    [[TMP1716:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1717:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1716]] acquire, align 4
// CHECK-NEXT:    [[TMP1718:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1719:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1718]] acquire, align 4
// CHECK-NEXT:    [[TMP1720:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1721:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1720]] acquire, align 4
// CHECK-NEXT:    [[TMP1722:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1723:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1722]] acquire, align 4
// CHECK-NEXT:    [[TMP1724:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1725:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1724]] acquire, align 4
// CHECK-NEXT:    [[TMP1726:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1727:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1726]] acquire, align 4
// CHECK-NEXT:    [[TMP1728:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1729:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1728]] monotonic, align 4
// CHECK-NEXT:    [[TMP1730:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1731:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1730]] monotonic, align 4
// CHECK-NEXT:    [[TMP1732:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1733:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1732]] monotonic, align 4
// CHECK-NEXT:    [[TMP1734:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1735:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1734]] monotonic, align 4
// CHECK-NEXT:    [[TMP1736:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1737:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1736]] monotonic, align 4
// CHECK-NEXT:    [[TMP1738:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1739:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1738]] monotonic, align 4
// CHECK-NEXT:    [[TMP1740:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1741:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1740]] monotonic, align 4
// CHECK-NEXT:    [[TMP1742:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1743:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1742]] monotonic, align 4
// CHECK-NEXT:    [[TMP1744:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1745:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1744]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1746:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1747:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1746]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1748:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1749:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1748]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1750:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1751:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1750]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1752:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1753:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1752]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1754:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1755:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1754]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1756:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1757:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1756]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1758:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1759:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1758]] release, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1760:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1761:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1760]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1762:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1763:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1762]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1764:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1765:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1764]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1766:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1767:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1766]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1768:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1769:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1768]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1770:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1771:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1770]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1772:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1773:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1772]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1774:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1775:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1774]] seq_cst, align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1776:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1777:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1776]] monotonic, align 8
// CHECK-NEXT:    [[TMP1778:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1779:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1778]] monotonic, align 8
// CHECK-NEXT:    [[TMP1780:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1781:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1780]] monotonic, align 8
// CHECK-NEXT:    [[TMP1782:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1783:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1782]] monotonic, align 8
// CHECK-NEXT:    [[TMP1784:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1785:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1784]] monotonic, align 8
// CHECK-NEXT:    [[TMP1786:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1787:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1786]] monotonic, align 8
// CHECK-NEXT:    [[TMP1788:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1789:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1788]] monotonic, align 8
// CHECK-NEXT:    [[TMP1790:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1791:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1790]] monotonic, align 8
// CHECK-NEXT:    [[TMP1792:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1793:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1792]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1794:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1795:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1794]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1796:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1797:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1796]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1798:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1799:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1798]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1800:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1801:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1800]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1802:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1803:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1802]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1804:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1805:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1804]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1806:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1807:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1806]] acq_rel, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1808:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1809:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1808]] acquire, align 8
// CHECK-NEXT:    [[TMP1810:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1811:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1810]] acquire, align 8
// CHECK-NEXT:    [[TMP1812:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1813:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1812]] acquire, align 8
// CHECK-NEXT:    [[TMP1814:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1815:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1814]] acquire, align 8
// CHECK-NEXT:    [[TMP1816:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1817:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1816]] acquire, align 8
// CHECK-NEXT:    [[TMP1818:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1819:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1818]] acquire, align 8
// CHECK-NEXT:    [[TMP1820:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1821:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1820]] acquire, align 8
// CHECK-NEXT:    [[TMP1822:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1823:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1822]] acquire, align 8
// CHECK-NEXT:    [[TMP1824:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1825:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1824]] monotonic, align 8
// CHECK-NEXT:    [[TMP1826:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1827:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1826]] monotonic, align 8
// CHECK-NEXT:    [[TMP1828:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1829:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1828]] monotonic, align 8
// CHECK-NEXT:    [[TMP1830:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1831:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1830]] monotonic, align 8
// CHECK-NEXT:    [[TMP1832:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1833:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1832]] monotonic, align 8
// CHECK-NEXT:    [[TMP1834:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1835:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1834]] monotonic, align 8
// CHECK-NEXT:    [[TMP1836:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1837:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1836]] monotonic, align 8
// CHECK-NEXT:    [[TMP1838:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1839:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1838]] monotonic, align 8
// CHECK-NEXT:    [[TMP1840:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1841:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1840]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1842:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1843:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1842]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1844:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1845:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1844]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1846:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1847:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1846]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1848:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1849:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1848]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1850:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1851:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1850]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1852:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1853:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1852]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1854:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1855:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1854]] release, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1856:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1857:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1856]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1858:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1859:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1858]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1860:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1861:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1860]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1862:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1863:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1862]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1864:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1865:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1864]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1866:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1867:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1866]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1868:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1869:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1868]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1870:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1871:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1870]] seq_cst, align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    ret void
//
//
// CHECK-LABEL: @bar(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[CX:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CV:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CR:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CE:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CD:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCX:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCV:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCR:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCE:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCD:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[SX:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SV:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SR:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SE:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SD:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USX:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USV:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USR:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USE:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USD:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[IX:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[IV:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[IR:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[IE:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[ID:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIX:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIV:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIR:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIE:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UID:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[LX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LR:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULR:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLR:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLR:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[FX:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FV:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FE:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FD:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[DX:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DV:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DE:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DD:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP0]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP1]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP2]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP3]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP4:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP5:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP4]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP5]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP6:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP7:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP6]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP7]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP9:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP10:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP8]], i8 [[TMP9]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP11:%.*]] = extractvalue { i8, i1 } [[TMP10]], 0
// CHECK-NEXT:    store i8 [[TMP11]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP13:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP14:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP12]], i8 [[TMP13]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP15:%.*]] = extractvalue { i8, i1 } [[TMP14]], 0
// CHECK-NEXT:    store i8 [[TMP15]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP16:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP17:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP16]] monotonic, align 1
// CHECK-NEXT:    [[TMP18:%.*]] = icmp sgt i8 [[TMP17]], [[TMP16]]
// CHECK-NEXT:    [[TMP19:%.*]] = select i1 [[TMP18]], i8 [[TMP16]], i8 [[TMP17]]
// CHECK-NEXT:    store i8 [[TMP19]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP20:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP21:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP20]] monotonic, align 1
// CHECK-NEXT:    [[TMP22:%.*]] = icmp slt i8 [[TMP21]], [[TMP20]]
// CHECK-NEXT:    [[TMP23:%.*]] = select i1 [[TMP22]], i8 [[TMP20]], i8 [[TMP21]]
// CHECK-NEXT:    store i8 [[TMP23]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP24:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP24]] monotonic, align 1
// CHECK-NEXT:    [[TMP26:%.*]] = icmp slt i8 [[TMP25]], [[TMP24]]
// CHECK-NEXT:    [[TMP27:%.*]] = select i1 [[TMP26]], i8 [[TMP24]], i8 [[TMP25]]
// CHECK-NEXT:    store i8 [[TMP27]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP28:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP29:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP28]] monotonic, align 1
// CHECK-NEXT:    [[TMP30:%.*]] = icmp sgt i8 [[TMP29]], [[TMP28]]
// CHECK-NEXT:    [[TMP31:%.*]] = select i1 [[TMP30]], i8 [[TMP28]], i8 [[TMP29]]
// CHECK-NEXT:    store i8 [[TMP31]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP32:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP33:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP34:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP32]], i8 [[TMP33]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP35:%.*]] = extractvalue { i8, i1 } [[TMP34]], 0
// CHECK-NEXT:    [[TMP36:%.*]] = extractvalue { i8, i1 } [[TMP34]], 1
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i8 [[TMP32]], i8 [[TMP35]]
// CHECK-NEXT:    store i8 [[TMP37]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP38:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP39:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP38]], i8 [[TMP39]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i8, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i8, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i8 [[TMP38]], i8 [[TMP41]]
// CHECK-NEXT:    store i8 [[TMP43]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP44:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP45:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP46:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP44]], i8 [[TMP45]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP47:%.*]] = extractvalue { i8, i1 } [[TMP46]], 0
// CHECK-NEXT:    [[TMP48:%.*]] = extractvalue { i8, i1 } [[TMP46]], 1
// CHECK-NEXT:    br i1 [[TMP48]], label [[CX_ATOMIC_EXIT:%.*]], label [[CX_ATOMIC_CONT:%.*]]
// CHECK:       cx.atomic.cont:
// CHECK-NEXT:    store i8 [[TMP47]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT]]
// CHECK:       cx.atomic.exit:
// CHECK-NEXT:    [[TMP49:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP50:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP51:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP49]], i8 [[TMP50]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP52:%.*]] = extractvalue { i8, i1 } [[TMP51]], 0
// CHECK-NEXT:    [[TMP53:%.*]] = extractvalue { i8, i1 } [[TMP51]], 1
// CHECK-NEXT:    br i1 [[TMP53]], label [[CX_ATOMIC_EXIT1:%.*]], label [[CX_ATOMIC_CONT2:%.*]]
// CHECK:       cx.atomic.cont2:
// CHECK-NEXT:    store i8 [[TMP52]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT1]]
// CHECK:       cx.atomic.exit1:
// CHECK-NEXT:    [[TMP54:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP55:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP56:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP54]], i8 [[TMP55]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP57:%.*]] = extractvalue { i8, i1 } [[TMP56]], 1
// CHECK-NEXT:    [[TMP58:%.*]] = sext i1 [[TMP57]] to i8
// CHECK-NEXT:    store i8 [[TMP58]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP59:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP60:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP61:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP59]], i8 [[TMP60]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP62:%.*]] = extractvalue { i8, i1 } [[TMP61]], 1
// CHECK-NEXT:    [[TMP63:%.*]] = sext i1 [[TMP62]] to i8
// CHECK-NEXT:    store i8 [[TMP63]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP64:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP65:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP66:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP64]], i8 [[TMP65]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP67:%.*]] = extractvalue { i8, i1 } [[TMP66]], 0
// CHECK-NEXT:    [[TMP68:%.*]] = extractvalue { i8, i1 } [[TMP66]], 1
// CHECK-NEXT:    br i1 [[TMP68]], label [[CX_ATOMIC_EXIT3:%.*]], label [[CX_ATOMIC_CONT4:%.*]]
// CHECK:       cx.atomic.cont4:
// CHECK-NEXT:    store i8 [[TMP67]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT3]]
// CHECK:       cx.atomic.exit3:
// CHECK-NEXT:    [[TMP69:%.*]] = extractvalue { i8, i1 } [[TMP66]], 1
// CHECK-NEXT:    [[TMP70:%.*]] = sext i1 [[TMP69]] to i8
// CHECK-NEXT:    store i8 [[TMP70]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP71:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP72:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP73:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP71]], i8 [[TMP72]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP74:%.*]] = extractvalue { i8, i1 } [[TMP73]], 0
// CHECK-NEXT:    [[TMP75:%.*]] = extractvalue { i8, i1 } [[TMP73]], 1
// CHECK-NEXT:    br i1 [[TMP75]], label [[CX_ATOMIC_EXIT5:%.*]], label [[CX_ATOMIC_CONT6:%.*]]
// CHECK:       cx.atomic.cont6:
// CHECK-NEXT:    store i8 [[TMP74]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT5]]
// CHECK:       cx.atomic.exit5:
// CHECK-NEXT:    [[TMP76:%.*]] = extractvalue { i8, i1 } [[TMP73]], 1
// CHECK-NEXT:    [[TMP77:%.*]] = sext i1 [[TMP76]] to i8
// CHECK-NEXT:    store i8 [[TMP77]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP78:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP78]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP79]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP80:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP81:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP80]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP81]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP82:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP83:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP82]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP83]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP84:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP85:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP84]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP85]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP86:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP87:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP88:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP86]], i8 [[TMP87]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP89:%.*]] = extractvalue { i8, i1 } [[TMP88]], 0
// CHECK-NEXT:    store i8 [[TMP89]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP91:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP92:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP90]], i8 [[TMP91]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP93:%.*]] = extractvalue { i8, i1 } [[TMP92]], 0
// CHECK-NEXT:    store i8 [[TMP93]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP94:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP95:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP94]] acq_rel, align 1
// CHECK-NEXT:    [[TMP96:%.*]] = icmp sgt i8 [[TMP95]], [[TMP94]]
// CHECK-NEXT:    [[TMP97:%.*]] = select i1 [[TMP96]], i8 [[TMP94]], i8 [[TMP95]]
// CHECK-NEXT:    store i8 [[TMP97]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP98:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP99:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP98]] acq_rel, align 1
// CHECK-NEXT:    [[TMP100:%.*]] = icmp slt i8 [[TMP99]], [[TMP98]]
// CHECK-NEXT:    [[TMP101:%.*]] = select i1 [[TMP100]], i8 [[TMP98]], i8 [[TMP99]]
// CHECK-NEXT:    store i8 [[TMP101]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP102:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP103:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP102]] acq_rel, align 1
// CHECK-NEXT:    [[TMP104:%.*]] = icmp slt i8 [[TMP103]], [[TMP102]]
// CHECK-NEXT:    [[TMP105:%.*]] = select i1 [[TMP104]], i8 [[TMP102]], i8 [[TMP103]]
// CHECK-NEXT:    store i8 [[TMP105]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP106:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP107:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP106]] acq_rel, align 1
// CHECK-NEXT:    [[TMP108:%.*]] = icmp sgt i8 [[TMP107]], [[TMP106]]
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i8 [[TMP106]], i8 [[TMP107]]
// CHECK-NEXT:    store i8 [[TMP109]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP111:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP112:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP110]], i8 [[TMP111]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP113:%.*]] = extractvalue { i8, i1 } [[TMP112]], 0
// CHECK-NEXT:    [[TMP114:%.*]] = extractvalue { i8, i1 } [[TMP112]], 1
// CHECK-NEXT:    [[TMP115:%.*]] = select i1 [[TMP114]], i8 [[TMP110]], i8 [[TMP113]]
// CHECK-NEXT:    store i8 [[TMP115]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP116:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP117:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP118:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP116]], i8 [[TMP117]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP119:%.*]] = extractvalue { i8, i1 } [[TMP118]], 0
// CHECK-NEXT:    [[TMP120:%.*]] = extractvalue { i8, i1 } [[TMP118]], 1
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i8 [[TMP116]], i8 [[TMP119]]
// CHECK-NEXT:    store i8 [[TMP121]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP123:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP124:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP122]], i8 [[TMP123]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP125:%.*]] = extractvalue { i8, i1 } [[TMP124]], 0
// CHECK-NEXT:    [[TMP126:%.*]] = extractvalue { i8, i1 } [[TMP124]], 1
// CHECK-NEXT:    br i1 [[TMP126]], label [[CX_ATOMIC_EXIT7:%.*]], label [[CX_ATOMIC_CONT8:%.*]]
// CHECK:       cx.atomic.cont8:
// CHECK-NEXT:    store i8 [[TMP125]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT7]]
// CHECK:       cx.atomic.exit7:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP127:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP128:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP129:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP127]], i8 [[TMP128]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i8, i1 } [[TMP129]], 0
// CHECK-NEXT:    [[TMP131:%.*]] = extractvalue { i8, i1 } [[TMP129]], 1
// CHECK-NEXT:    br i1 [[TMP131]], label [[CX_ATOMIC_EXIT9:%.*]], label [[CX_ATOMIC_CONT10:%.*]]
// CHECK:       cx.atomic.cont10:
// CHECK-NEXT:    store i8 [[TMP130]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT9]]
// CHECK:       cx.atomic.exit9:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP133:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP134:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP132]], i8 [[TMP133]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP135:%.*]] = extractvalue { i8, i1 } [[TMP134]], 1
// CHECK-NEXT:    [[TMP136:%.*]] = sext i1 [[TMP135]] to i8
// CHECK-NEXT:    store i8 [[TMP136]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP137:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP138:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP139:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP137]], i8 [[TMP138]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP140:%.*]] = extractvalue { i8, i1 } [[TMP139]], 1
// CHECK-NEXT:    [[TMP141:%.*]] = sext i1 [[TMP140]] to i8
// CHECK-NEXT:    store i8 [[TMP141]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP142:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP143:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP144:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP142]], i8 [[TMP143]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP145:%.*]] = extractvalue { i8, i1 } [[TMP144]], 0
// CHECK-NEXT:    [[TMP146:%.*]] = extractvalue { i8, i1 } [[TMP144]], 1
// CHECK-NEXT:    br i1 [[TMP146]], label [[CX_ATOMIC_EXIT11:%.*]], label [[CX_ATOMIC_CONT12:%.*]]
// CHECK:       cx.atomic.cont12:
// CHECK-NEXT:    store i8 [[TMP145]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT11]]
// CHECK:       cx.atomic.exit11:
// CHECK-NEXT:    [[TMP147:%.*]] = extractvalue { i8, i1 } [[TMP144]], 1
// CHECK-NEXT:    [[TMP148:%.*]] = sext i1 [[TMP147]] to i8
// CHECK-NEXT:    store i8 [[TMP148]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP149:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP150:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP151:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP149]], i8 [[TMP150]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP152:%.*]] = extractvalue { i8, i1 } [[TMP151]], 0
// CHECK-NEXT:    [[TMP153:%.*]] = extractvalue { i8, i1 } [[TMP151]], 1
// CHECK-NEXT:    br i1 [[TMP153]], label [[CX_ATOMIC_EXIT13:%.*]], label [[CX_ATOMIC_CONT14:%.*]]
// CHECK:       cx.atomic.cont14:
// CHECK-NEXT:    store i8 [[TMP152]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT13]]
// CHECK:       cx.atomic.exit13:
// CHECK-NEXT:    [[TMP154:%.*]] = extractvalue { i8, i1 } [[TMP151]], 1
// CHECK-NEXT:    [[TMP155:%.*]] = sext i1 [[TMP154]] to i8
// CHECK-NEXT:    store i8 [[TMP155]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP156:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP157:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP156]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP157]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP158:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP159:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP158]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP159]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP160:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP161:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP160]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP161]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP162:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP163:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP162]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP163]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP164:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP165:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP166:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP164]], i8 [[TMP165]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP167:%.*]] = extractvalue { i8, i1 } [[TMP166]], 0
// CHECK-NEXT:    store i8 [[TMP167]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP168:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP169:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP170:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP168]], i8 [[TMP169]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP171:%.*]] = extractvalue { i8, i1 } [[TMP170]], 0
// CHECK-NEXT:    store i8 [[TMP171]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP172:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP173:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP172]] acquire, align 1
// CHECK-NEXT:    [[TMP174:%.*]] = icmp sgt i8 [[TMP173]], [[TMP172]]
// CHECK-NEXT:    [[TMP175:%.*]] = select i1 [[TMP174]], i8 [[TMP172]], i8 [[TMP173]]
// CHECK-NEXT:    store i8 [[TMP175]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP176:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP177:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP176]] acquire, align 1
// CHECK-NEXT:    [[TMP178:%.*]] = icmp slt i8 [[TMP177]], [[TMP176]]
// CHECK-NEXT:    [[TMP179:%.*]] = select i1 [[TMP178]], i8 [[TMP176]], i8 [[TMP177]]
// CHECK-NEXT:    store i8 [[TMP179]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP180:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP181:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP180]] acquire, align 1
// CHECK-NEXT:    [[TMP182:%.*]] = icmp slt i8 [[TMP181]], [[TMP180]]
// CHECK-NEXT:    [[TMP183:%.*]] = select i1 [[TMP182]], i8 [[TMP180]], i8 [[TMP181]]
// CHECK-NEXT:    store i8 [[TMP183]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP184:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP185:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP184]] acquire, align 1
// CHECK-NEXT:    [[TMP186:%.*]] = icmp sgt i8 [[TMP185]], [[TMP184]]
// CHECK-NEXT:    [[TMP187:%.*]] = select i1 [[TMP186]], i8 [[TMP184]], i8 [[TMP185]]
// CHECK-NEXT:    store i8 [[TMP187]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP188:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP189:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP190:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP188]], i8 [[TMP189]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP191:%.*]] = extractvalue { i8, i1 } [[TMP190]], 0
// CHECK-NEXT:    [[TMP192:%.*]] = extractvalue { i8, i1 } [[TMP190]], 1
// CHECK-NEXT:    [[TMP193:%.*]] = select i1 [[TMP192]], i8 [[TMP188]], i8 [[TMP191]]
// CHECK-NEXT:    store i8 [[TMP193]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP194:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP195:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP196:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP194]], i8 [[TMP195]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP197:%.*]] = extractvalue { i8, i1 } [[TMP196]], 0
// CHECK-NEXT:    [[TMP198:%.*]] = extractvalue { i8, i1 } [[TMP196]], 1
// CHECK-NEXT:    [[TMP199:%.*]] = select i1 [[TMP198]], i8 [[TMP194]], i8 [[TMP197]]
// CHECK-NEXT:    store i8 [[TMP199]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP200:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP201:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP202:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP200]], i8 [[TMP201]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP203:%.*]] = extractvalue { i8, i1 } [[TMP202]], 0
// CHECK-NEXT:    [[TMP204:%.*]] = extractvalue { i8, i1 } [[TMP202]], 1
// CHECK-NEXT:    br i1 [[TMP204]], label [[CX_ATOMIC_EXIT15:%.*]], label [[CX_ATOMIC_CONT16:%.*]]
// CHECK:       cx.atomic.cont16:
// CHECK-NEXT:    store i8 [[TMP203]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT15]]
// CHECK:       cx.atomic.exit15:
// CHECK-NEXT:    [[TMP205:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP206:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP207:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP205]], i8 [[TMP206]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP208:%.*]] = extractvalue { i8, i1 } [[TMP207]], 0
// CHECK-NEXT:    [[TMP209:%.*]] = extractvalue { i8, i1 } [[TMP207]], 1
// CHECK-NEXT:    br i1 [[TMP209]], label [[CX_ATOMIC_EXIT17:%.*]], label [[CX_ATOMIC_CONT18:%.*]]
// CHECK:       cx.atomic.cont18:
// CHECK-NEXT:    store i8 [[TMP208]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT17]]
// CHECK:       cx.atomic.exit17:
// CHECK-NEXT:    [[TMP210:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP211:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP212:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP210]], i8 [[TMP211]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP213:%.*]] = extractvalue { i8, i1 } [[TMP212]], 1
// CHECK-NEXT:    [[TMP214:%.*]] = sext i1 [[TMP213]] to i8
// CHECK-NEXT:    store i8 [[TMP214]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP215:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP216:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP217:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP215]], i8 [[TMP216]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP218:%.*]] = extractvalue { i8, i1 } [[TMP217]], 1
// CHECK-NEXT:    [[TMP219:%.*]] = sext i1 [[TMP218]] to i8
// CHECK-NEXT:    store i8 [[TMP219]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP220:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP221:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP222:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP220]], i8 [[TMP221]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP223:%.*]] = extractvalue { i8, i1 } [[TMP222]], 0
// CHECK-NEXT:    [[TMP224:%.*]] = extractvalue { i8, i1 } [[TMP222]], 1
// CHECK-NEXT:    br i1 [[TMP224]], label [[CX_ATOMIC_EXIT19:%.*]], label [[CX_ATOMIC_CONT20:%.*]]
// CHECK:       cx.atomic.cont20:
// CHECK-NEXT:    store i8 [[TMP223]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT19]]
// CHECK:       cx.atomic.exit19:
// CHECK-NEXT:    [[TMP225:%.*]] = extractvalue { i8, i1 } [[TMP222]], 1
// CHECK-NEXT:    [[TMP226:%.*]] = sext i1 [[TMP225]] to i8
// CHECK-NEXT:    store i8 [[TMP226]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP227:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP228:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP229:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP227]], i8 [[TMP228]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP230:%.*]] = extractvalue { i8, i1 } [[TMP229]], 0
// CHECK-NEXT:    [[TMP231:%.*]] = extractvalue { i8, i1 } [[TMP229]], 1
// CHECK-NEXT:    br i1 [[TMP231]], label [[CX_ATOMIC_EXIT21:%.*]], label [[CX_ATOMIC_CONT22:%.*]]
// CHECK:       cx.atomic.cont22:
// CHECK-NEXT:    store i8 [[TMP230]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT21]]
// CHECK:       cx.atomic.exit21:
// CHECK-NEXT:    [[TMP232:%.*]] = extractvalue { i8, i1 } [[TMP229]], 1
// CHECK-NEXT:    [[TMP233:%.*]] = sext i1 [[TMP232]] to i8
// CHECK-NEXT:    store i8 [[TMP233]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP234:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP235:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP234]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP235]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP236:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP237:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP236]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP237]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP238:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP239:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP238]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP239]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP240:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP241:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP240]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP241]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP242:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP243:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP244:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP242]], i8 [[TMP243]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP245:%.*]] = extractvalue { i8, i1 } [[TMP244]], 0
// CHECK-NEXT:    store i8 [[TMP245]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP246:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP247:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP248:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP246]], i8 [[TMP247]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP249:%.*]] = extractvalue { i8, i1 } [[TMP248]], 0
// CHECK-NEXT:    store i8 [[TMP249]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP250:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP251:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP250]] monotonic, align 1
// CHECK-NEXT:    [[TMP252:%.*]] = icmp sgt i8 [[TMP251]], [[TMP250]]
// CHECK-NEXT:    [[TMP253:%.*]] = select i1 [[TMP252]], i8 [[TMP250]], i8 [[TMP251]]
// CHECK-NEXT:    store i8 [[TMP253]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP254:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP255:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP254]] monotonic, align 1
// CHECK-NEXT:    [[TMP256:%.*]] = icmp slt i8 [[TMP255]], [[TMP254]]
// CHECK-NEXT:    [[TMP257:%.*]] = select i1 [[TMP256]], i8 [[TMP254]], i8 [[TMP255]]
// CHECK-NEXT:    store i8 [[TMP257]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP258:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP259:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP258]] monotonic, align 1
// CHECK-NEXT:    [[TMP260:%.*]] = icmp slt i8 [[TMP259]], [[TMP258]]
// CHECK-NEXT:    [[TMP261:%.*]] = select i1 [[TMP260]], i8 [[TMP258]], i8 [[TMP259]]
// CHECK-NEXT:    store i8 [[TMP261]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP262:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP263:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP262]] monotonic, align 1
// CHECK-NEXT:    [[TMP264:%.*]] = icmp sgt i8 [[TMP263]], [[TMP262]]
// CHECK-NEXT:    [[TMP265:%.*]] = select i1 [[TMP264]], i8 [[TMP262]], i8 [[TMP263]]
// CHECK-NEXT:    store i8 [[TMP265]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP266:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP267:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP268:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP266]], i8 [[TMP267]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP269:%.*]] = extractvalue { i8, i1 } [[TMP268]], 0
// CHECK-NEXT:    [[TMP270:%.*]] = extractvalue { i8, i1 } [[TMP268]], 1
// CHECK-NEXT:    [[TMP271:%.*]] = select i1 [[TMP270]], i8 [[TMP266]], i8 [[TMP269]]
// CHECK-NEXT:    store i8 [[TMP271]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP272:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP273:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP274:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP272]], i8 [[TMP273]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP275:%.*]] = extractvalue { i8, i1 } [[TMP274]], 0
// CHECK-NEXT:    [[TMP276:%.*]] = extractvalue { i8, i1 } [[TMP274]], 1
// CHECK-NEXT:    [[TMP277:%.*]] = select i1 [[TMP276]], i8 [[TMP272]], i8 [[TMP275]]
// CHECK-NEXT:    store i8 [[TMP277]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP278:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP279:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP280:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP278]], i8 [[TMP279]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP281:%.*]] = extractvalue { i8, i1 } [[TMP280]], 0
// CHECK-NEXT:    [[TMP282:%.*]] = extractvalue { i8, i1 } [[TMP280]], 1
// CHECK-NEXT:    br i1 [[TMP282]], label [[CX_ATOMIC_EXIT23:%.*]], label [[CX_ATOMIC_CONT24:%.*]]
// CHECK:       cx.atomic.cont24:
// CHECK-NEXT:    store i8 [[TMP281]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT23]]
// CHECK:       cx.atomic.exit23:
// CHECK-NEXT:    [[TMP283:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP284:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP285:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP283]], i8 [[TMP284]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP286:%.*]] = extractvalue { i8, i1 } [[TMP285]], 0
// CHECK-NEXT:    [[TMP287:%.*]] = extractvalue { i8, i1 } [[TMP285]], 1
// CHECK-NEXT:    br i1 [[TMP287]], label [[CX_ATOMIC_EXIT25:%.*]], label [[CX_ATOMIC_CONT26:%.*]]
// CHECK:       cx.atomic.cont26:
// CHECK-NEXT:    store i8 [[TMP286]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT25]]
// CHECK:       cx.atomic.exit25:
// CHECK-NEXT:    [[TMP288:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP289:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP290:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP288]], i8 [[TMP289]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP291:%.*]] = extractvalue { i8, i1 } [[TMP290]], 1
// CHECK-NEXT:    [[TMP292:%.*]] = sext i1 [[TMP291]] to i8
// CHECK-NEXT:    store i8 [[TMP292]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP293:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP294:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP295:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP293]], i8 [[TMP294]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP296:%.*]] = extractvalue { i8, i1 } [[TMP295]], 1
// CHECK-NEXT:    [[TMP297:%.*]] = sext i1 [[TMP296]] to i8
// CHECK-NEXT:    store i8 [[TMP297]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP298:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP299:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP300:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP298]], i8 [[TMP299]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP301:%.*]] = extractvalue { i8, i1 } [[TMP300]], 0
// CHECK-NEXT:    [[TMP302:%.*]] = extractvalue { i8, i1 } [[TMP300]], 1
// CHECK-NEXT:    br i1 [[TMP302]], label [[CX_ATOMIC_EXIT27:%.*]], label [[CX_ATOMIC_CONT28:%.*]]
// CHECK:       cx.atomic.cont28:
// CHECK-NEXT:    store i8 [[TMP301]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT27]]
// CHECK:       cx.atomic.exit27:
// CHECK-NEXT:    [[TMP303:%.*]] = extractvalue { i8, i1 } [[TMP300]], 1
// CHECK-NEXT:    [[TMP304:%.*]] = sext i1 [[TMP303]] to i8
// CHECK-NEXT:    store i8 [[TMP304]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP305:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP306:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP307:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP305]], i8 [[TMP306]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP308:%.*]] = extractvalue { i8, i1 } [[TMP307]], 0
// CHECK-NEXT:    [[TMP309:%.*]] = extractvalue { i8, i1 } [[TMP307]], 1
// CHECK-NEXT:    br i1 [[TMP309]], label [[CX_ATOMIC_EXIT29:%.*]], label [[CX_ATOMIC_CONT30:%.*]]
// CHECK:       cx.atomic.cont30:
// CHECK-NEXT:    store i8 [[TMP308]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT29]]
// CHECK:       cx.atomic.exit29:
// CHECK-NEXT:    [[TMP310:%.*]] = extractvalue { i8, i1 } [[TMP307]], 1
// CHECK-NEXT:    [[TMP311:%.*]] = sext i1 [[TMP310]] to i8
// CHECK-NEXT:    store i8 [[TMP311]], ptr [[CR]], align 1
// CHECK-NEXT:    [[TMP312:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP313:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP312]] release, align 1
// CHECK-NEXT:    store i8 [[TMP313]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP314:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP315:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP314]] release, align 1
// CHECK-NEXT:    store i8 [[TMP315]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP316:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP317:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP316]] release, align 1
// CHECK-NEXT:    store i8 [[TMP317]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP318:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP319:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP318]] release, align 1
// CHECK-NEXT:    store i8 [[TMP319]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP320:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP321:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP322:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP320]], i8 [[TMP321]] release monotonic, align 1
// CHECK-NEXT:    [[TMP323:%.*]] = extractvalue { i8, i1 } [[TMP322]], 0
// CHECK-NEXT:    store i8 [[TMP323]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP324:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP325:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP326:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP324]], i8 [[TMP325]] release monotonic, align 1
// CHECK-NEXT:    [[TMP327:%.*]] = extractvalue { i8, i1 } [[TMP326]], 0
// CHECK-NEXT:    store i8 [[TMP327]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP328:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP329:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP328]] release, align 1
// CHECK-NEXT:    [[TMP330:%.*]] = icmp sgt i8 [[TMP329]], [[TMP328]]
// CHECK-NEXT:    [[TMP331:%.*]] = select i1 [[TMP330]], i8 [[TMP328]], i8 [[TMP329]]
// CHECK-NEXT:    store i8 [[TMP331]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP332:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP333:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP332]] release, align 1
// CHECK-NEXT:    [[TMP334:%.*]] = icmp slt i8 [[TMP333]], [[TMP332]]
// CHECK-NEXT:    [[TMP335:%.*]] = select i1 [[TMP334]], i8 [[TMP332]], i8 [[TMP333]]
// CHECK-NEXT:    store i8 [[TMP335]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP336:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP337:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP336]] release, align 1
// CHECK-NEXT:    [[TMP338:%.*]] = icmp slt i8 [[TMP337]], [[TMP336]]
// CHECK-NEXT:    [[TMP339:%.*]] = select i1 [[TMP338]], i8 [[TMP336]], i8 [[TMP337]]
// CHECK-NEXT:    store i8 [[TMP339]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP340:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP341:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP340]] release, align 1
// CHECK-NEXT:    [[TMP342:%.*]] = icmp sgt i8 [[TMP341]], [[TMP340]]
// CHECK-NEXT:    [[TMP343:%.*]] = select i1 [[TMP342]], i8 [[TMP340]], i8 [[TMP341]]
// CHECK-NEXT:    store i8 [[TMP343]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP344:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP345:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP346:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP344]], i8 [[TMP345]] release monotonic, align 1
// CHECK-NEXT:    [[TMP347:%.*]] = extractvalue { i8, i1 } [[TMP346]], 0
// CHECK-NEXT:    [[TMP348:%.*]] = extractvalue { i8, i1 } [[TMP346]], 1
// CHECK-NEXT:    [[TMP349:%.*]] = select i1 [[TMP348]], i8 [[TMP344]], i8 [[TMP347]]
// CHECK-NEXT:    store i8 [[TMP349]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP350:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP351:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP352:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP350]], i8 [[TMP351]] release monotonic, align 1
// CHECK-NEXT:    [[TMP353:%.*]] = extractvalue { i8, i1 } [[TMP352]], 0
// CHECK-NEXT:    [[TMP354:%.*]] = extractvalue { i8, i1 } [[TMP352]], 1
// CHECK-NEXT:    [[TMP355:%.*]] = select i1 [[TMP354]], i8 [[TMP350]], i8 [[TMP353]]
// CHECK-NEXT:    store i8 [[TMP355]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP356:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP357:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP358:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP356]], i8 [[TMP357]] release monotonic, align 1
// CHECK-NEXT:    [[TMP359:%.*]] = extractvalue { i8, i1 } [[TMP358]], 0
// CHECK-NEXT:    [[TMP360:%.*]] = extractvalue { i8, i1 } [[TMP358]], 1
// CHECK-NEXT:    br i1 [[TMP360]], label [[CX_ATOMIC_EXIT31:%.*]], label [[CX_ATOMIC_CONT32:%.*]]
// CHECK:       cx.atomic.cont32:
// CHECK-NEXT:    store i8 [[TMP359]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT31]]
// CHECK:       cx.atomic.exit31:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP361:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP362:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP363:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP361]], i8 [[TMP362]] release monotonic, align 1
// CHECK-NEXT:    [[TMP364:%.*]] = extractvalue { i8, i1 } [[TMP363]], 0
// CHECK-NEXT:    [[TMP365:%.*]] = extractvalue { i8, i1 } [[TMP363]], 1
// CHECK-NEXT:    br i1 [[TMP365]], label [[CX_ATOMIC_EXIT33:%.*]], label [[CX_ATOMIC_CONT34:%.*]]
// CHECK:       cx.atomic.cont34:
// CHECK-NEXT:    store i8 [[TMP364]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT33]]
// CHECK:       cx.atomic.exit33:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP366:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP367:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP368:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP366]], i8 [[TMP367]] release monotonic, align 1
// CHECK-NEXT:    [[TMP369:%.*]] = extractvalue { i8, i1 } [[TMP368]], 1
// CHECK-NEXT:    [[TMP370:%.*]] = sext i1 [[TMP369]] to i8
// CHECK-NEXT:    store i8 [[TMP370]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP371:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP372:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP373:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP371]], i8 [[TMP372]] release monotonic, align 1
// CHECK-NEXT:    [[TMP374:%.*]] = extractvalue { i8, i1 } [[TMP373]], 1
// CHECK-NEXT:    [[TMP375:%.*]] = sext i1 [[TMP374]] to i8
// CHECK-NEXT:    store i8 [[TMP375]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP376:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP377:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP378:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP376]], i8 [[TMP377]] release monotonic, align 1
// CHECK-NEXT:    [[TMP379:%.*]] = extractvalue { i8, i1 } [[TMP378]], 0
// CHECK-NEXT:    [[TMP380:%.*]] = extractvalue { i8, i1 } [[TMP378]], 1
// CHECK-NEXT:    br i1 [[TMP380]], label [[CX_ATOMIC_EXIT35:%.*]], label [[CX_ATOMIC_CONT36:%.*]]
// CHECK:       cx.atomic.cont36:
// CHECK-NEXT:    store i8 [[TMP379]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT35]]
// CHECK:       cx.atomic.exit35:
// CHECK-NEXT:    [[TMP381:%.*]] = extractvalue { i8, i1 } [[TMP378]], 1
// CHECK-NEXT:    [[TMP382:%.*]] = sext i1 [[TMP381]] to i8
// CHECK-NEXT:    store i8 [[TMP382]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP383:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP384:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP385:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP383]], i8 [[TMP384]] release monotonic, align 1
// CHECK-NEXT:    [[TMP386:%.*]] = extractvalue { i8, i1 } [[TMP385]], 0
// CHECK-NEXT:    [[TMP387:%.*]] = extractvalue { i8, i1 } [[TMP385]], 1
// CHECK-NEXT:    br i1 [[TMP387]], label [[CX_ATOMIC_EXIT37:%.*]], label [[CX_ATOMIC_CONT38:%.*]]
// CHECK:       cx.atomic.cont38:
// CHECK-NEXT:    store i8 [[TMP386]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT37]]
// CHECK:       cx.atomic.exit37:
// CHECK-NEXT:    [[TMP388:%.*]] = extractvalue { i8, i1 } [[TMP385]], 1
// CHECK-NEXT:    [[TMP389:%.*]] = sext i1 [[TMP388]] to i8
// CHECK-NEXT:    store i8 [[TMP389]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP390:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP391:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP390]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP391]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP392:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP393:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP392]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP393]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP394:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP395:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP394]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP395]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP396:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP397:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP396]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP397]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP398:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP399:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP400:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP398]], i8 [[TMP399]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP401:%.*]] = extractvalue { i8, i1 } [[TMP400]], 0
// CHECK-NEXT:    store i8 [[TMP401]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP402:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP403:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP404:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP402]], i8 [[TMP403]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP405:%.*]] = extractvalue { i8, i1 } [[TMP404]], 0
// CHECK-NEXT:    store i8 [[TMP405]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP406:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP407:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP406]] seq_cst, align 1
// CHECK-NEXT:    [[TMP408:%.*]] = icmp sgt i8 [[TMP407]], [[TMP406]]
// CHECK-NEXT:    [[TMP409:%.*]] = select i1 [[TMP408]], i8 [[TMP406]], i8 [[TMP407]]
// CHECK-NEXT:    store i8 [[TMP409]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP410:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP411:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP410]] seq_cst, align 1
// CHECK-NEXT:    [[TMP412:%.*]] = icmp slt i8 [[TMP411]], [[TMP410]]
// CHECK-NEXT:    [[TMP413:%.*]] = select i1 [[TMP412]], i8 [[TMP410]], i8 [[TMP411]]
// CHECK-NEXT:    store i8 [[TMP413]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP414:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP415:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP414]] seq_cst, align 1
// CHECK-NEXT:    [[TMP416:%.*]] = icmp slt i8 [[TMP415]], [[TMP414]]
// CHECK-NEXT:    [[TMP417:%.*]] = select i1 [[TMP416]], i8 [[TMP414]], i8 [[TMP415]]
// CHECK-NEXT:    store i8 [[TMP417]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP418:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP419:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP418]] seq_cst, align 1
// CHECK-NEXT:    [[TMP420:%.*]] = icmp sgt i8 [[TMP419]], [[TMP418]]
// CHECK-NEXT:    [[TMP421:%.*]] = select i1 [[TMP420]], i8 [[TMP418]], i8 [[TMP419]]
// CHECK-NEXT:    store i8 [[TMP421]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP422:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP423:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP424:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP422]], i8 [[TMP423]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP425:%.*]] = extractvalue { i8, i1 } [[TMP424]], 0
// CHECK-NEXT:    [[TMP426:%.*]] = extractvalue { i8, i1 } [[TMP424]], 1
// CHECK-NEXT:    [[TMP427:%.*]] = select i1 [[TMP426]], i8 [[TMP422]], i8 [[TMP425]]
// CHECK-NEXT:    store i8 [[TMP427]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP428:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP429:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP430:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP428]], i8 [[TMP429]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP431:%.*]] = extractvalue { i8, i1 } [[TMP430]], 0
// CHECK-NEXT:    [[TMP432:%.*]] = extractvalue { i8, i1 } [[TMP430]], 1
// CHECK-NEXT:    [[TMP433:%.*]] = select i1 [[TMP432]], i8 [[TMP428]], i8 [[TMP431]]
// CHECK-NEXT:    store i8 [[TMP433]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP434:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP435:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP436:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP434]], i8 [[TMP435]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP437:%.*]] = extractvalue { i8, i1 } [[TMP436]], 0
// CHECK-NEXT:    [[TMP438:%.*]] = extractvalue { i8, i1 } [[TMP436]], 1
// CHECK-NEXT:    br i1 [[TMP438]], label [[CX_ATOMIC_EXIT39:%.*]], label [[CX_ATOMIC_CONT40:%.*]]
// CHECK:       cx.atomic.cont40:
// CHECK-NEXT:    store i8 [[TMP437]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT39]]
// CHECK:       cx.atomic.exit39:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP439:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP440:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP441:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP439]], i8 [[TMP440]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP442:%.*]] = extractvalue { i8, i1 } [[TMP441]], 0
// CHECK-NEXT:    [[TMP443:%.*]] = extractvalue { i8, i1 } [[TMP441]], 1
// CHECK-NEXT:    br i1 [[TMP443]], label [[CX_ATOMIC_EXIT41:%.*]], label [[CX_ATOMIC_CONT42:%.*]]
// CHECK:       cx.atomic.cont42:
// CHECK-NEXT:    store i8 [[TMP442]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT41]]
// CHECK:       cx.atomic.exit41:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP444:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP445:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP446:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP444]], i8 [[TMP445]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP447:%.*]] = extractvalue { i8, i1 } [[TMP446]], 1
// CHECK-NEXT:    [[TMP448:%.*]] = sext i1 [[TMP447]] to i8
// CHECK-NEXT:    store i8 [[TMP448]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP449:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP450:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP451:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP449]], i8 [[TMP450]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP452:%.*]] = extractvalue { i8, i1 } [[TMP451]], 1
// CHECK-NEXT:    [[TMP453:%.*]] = sext i1 [[TMP452]] to i8
// CHECK-NEXT:    store i8 [[TMP453]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP454:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP455:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP456:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP454]], i8 [[TMP455]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP457:%.*]] = extractvalue { i8, i1 } [[TMP456]], 0
// CHECK-NEXT:    [[TMP458:%.*]] = extractvalue { i8, i1 } [[TMP456]], 1
// CHECK-NEXT:    br i1 [[TMP458]], label [[CX_ATOMIC_EXIT43:%.*]], label [[CX_ATOMIC_CONT44:%.*]]
// CHECK:       cx.atomic.cont44:
// CHECK-NEXT:    store i8 [[TMP457]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT43]]
// CHECK:       cx.atomic.exit43:
// CHECK-NEXT:    [[TMP459:%.*]] = extractvalue { i8, i1 } [[TMP456]], 1
// CHECK-NEXT:    [[TMP460:%.*]] = sext i1 [[TMP459]] to i8
// CHECK-NEXT:    store i8 [[TMP460]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP461:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP462:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP463:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP461]], i8 [[TMP462]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP464:%.*]] = extractvalue { i8, i1 } [[TMP463]], 0
// CHECK-NEXT:    [[TMP465:%.*]] = extractvalue { i8, i1 } [[TMP463]], 1
// CHECK-NEXT:    br i1 [[TMP465]], label [[CX_ATOMIC_EXIT45:%.*]], label [[CX_ATOMIC_CONT46:%.*]]
// CHECK:       cx.atomic.cont46:
// CHECK-NEXT:    store i8 [[TMP464]], ptr [[CV]], align 1
// CHECK-NEXT:    br label [[CX_ATOMIC_EXIT45]]
// CHECK:       cx.atomic.exit45:
// CHECK-NEXT:    [[TMP466:%.*]] = extractvalue { i8, i1 } [[TMP463]], 1
// CHECK-NEXT:    [[TMP467:%.*]] = sext i1 [[TMP466]] to i8
// CHECK-NEXT:    store i8 [[TMP467]], ptr [[CR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP468:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP469:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP468]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP469]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP470:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP471:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP470]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP471]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP472:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP473:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP472]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP473]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP474:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP475:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP474]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP475]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP476:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP477:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP478:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP476]], i8 [[TMP477]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP479:%.*]] = extractvalue { i8, i1 } [[TMP478]], 0
// CHECK-NEXT:    store i8 [[TMP479]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP480:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP481:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP482:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP480]], i8 [[TMP481]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP483:%.*]] = extractvalue { i8, i1 } [[TMP482]], 0
// CHECK-NEXT:    store i8 [[TMP483]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP484:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP485:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP484]] monotonic, align 1
// CHECK-NEXT:    [[TMP486:%.*]] = icmp ugt i8 [[TMP485]], [[TMP484]]
// CHECK-NEXT:    [[TMP487:%.*]] = select i1 [[TMP486]], i8 [[TMP484]], i8 [[TMP485]]
// CHECK-NEXT:    store i8 [[TMP487]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP488:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP489:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP488]] monotonic, align 1
// CHECK-NEXT:    [[TMP490:%.*]] = icmp ult i8 [[TMP489]], [[TMP488]]
// CHECK-NEXT:    [[TMP491:%.*]] = select i1 [[TMP490]], i8 [[TMP488]], i8 [[TMP489]]
// CHECK-NEXT:    store i8 [[TMP491]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP492:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP493:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP492]] monotonic, align 1
// CHECK-NEXT:    [[TMP494:%.*]] = icmp ult i8 [[TMP493]], [[TMP492]]
// CHECK-NEXT:    [[TMP495:%.*]] = select i1 [[TMP494]], i8 [[TMP492]], i8 [[TMP493]]
// CHECK-NEXT:    store i8 [[TMP495]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP496:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP497:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP496]] monotonic, align 1
// CHECK-NEXT:    [[TMP498:%.*]] = icmp ugt i8 [[TMP497]], [[TMP496]]
// CHECK-NEXT:    [[TMP499:%.*]] = select i1 [[TMP498]], i8 [[TMP496]], i8 [[TMP497]]
// CHECK-NEXT:    store i8 [[TMP499]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP500:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP501:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP502:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP500]], i8 [[TMP501]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP503:%.*]] = extractvalue { i8, i1 } [[TMP502]], 0
// CHECK-NEXT:    [[TMP504:%.*]] = extractvalue { i8, i1 } [[TMP502]], 1
// CHECK-NEXT:    [[TMP505:%.*]] = select i1 [[TMP504]], i8 [[TMP500]], i8 [[TMP503]]
// CHECK-NEXT:    store i8 [[TMP505]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP506:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP507:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP508:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP506]], i8 [[TMP507]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP509:%.*]] = extractvalue { i8, i1 } [[TMP508]], 0
// CHECK-NEXT:    [[TMP510:%.*]] = extractvalue { i8, i1 } [[TMP508]], 1
// CHECK-NEXT:    [[TMP511:%.*]] = select i1 [[TMP510]], i8 [[TMP506]], i8 [[TMP509]]
// CHECK-NEXT:    store i8 [[TMP511]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP512:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP513:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP514:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP512]], i8 [[TMP513]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP515:%.*]] = extractvalue { i8, i1 } [[TMP514]], 0
// CHECK-NEXT:    [[TMP516:%.*]] = extractvalue { i8, i1 } [[TMP514]], 1
// CHECK-NEXT:    br i1 [[TMP516]], label [[UCX_ATOMIC_EXIT:%.*]], label [[UCX_ATOMIC_CONT:%.*]]
// CHECK:       ucx.atomic.cont:
// CHECK-NEXT:    store i8 [[TMP515]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT]]
// CHECK:       ucx.atomic.exit:
// CHECK-NEXT:    [[TMP517:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP518:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP519:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP517]], i8 [[TMP518]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP520:%.*]] = extractvalue { i8, i1 } [[TMP519]], 0
// CHECK-NEXT:    [[TMP521:%.*]] = extractvalue { i8, i1 } [[TMP519]], 1
// CHECK-NEXT:    br i1 [[TMP521]], label [[UCX_ATOMIC_EXIT47:%.*]], label [[UCX_ATOMIC_CONT48:%.*]]
// CHECK:       ucx.atomic.cont48:
// CHECK-NEXT:    store i8 [[TMP520]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT47]]
// CHECK:       ucx.atomic.exit47:
// CHECK-NEXT:    [[TMP522:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP523:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP524:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP522]], i8 [[TMP523]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP525:%.*]] = extractvalue { i8, i1 } [[TMP524]], 1
// CHECK-NEXT:    [[TMP526:%.*]] = zext i1 [[TMP525]] to i8
// CHECK-NEXT:    store i8 [[TMP526]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP527:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP528:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP529:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP527]], i8 [[TMP528]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP530:%.*]] = extractvalue { i8, i1 } [[TMP529]], 1
// CHECK-NEXT:    [[TMP531:%.*]] = zext i1 [[TMP530]] to i8
// CHECK-NEXT:    store i8 [[TMP531]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP532:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP533:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP534:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP532]], i8 [[TMP533]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP535:%.*]] = extractvalue { i8, i1 } [[TMP534]], 0
// CHECK-NEXT:    [[TMP536:%.*]] = extractvalue { i8, i1 } [[TMP534]], 1
// CHECK-NEXT:    br i1 [[TMP536]], label [[UCX_ATOMIC_EXIT49:%.*]], label [[UCX_ATOMIC_CONT50:%.*]]
// CHECK:       ucx.atomic.cont50:
// CHECK-NEXT:    store i8 [[TMP535]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT49]]
// CHECK:       ucx.atomic.exit49:
// CHECK-NEXT:    [[TMP537:%.*]] = extractvalue { i8, i1 } [[TMP534]], 1
// CHECK-NEXT:    [[TMP538:%.*]] = zext i1 [[TMP537]] to i8
// CHECK-NEXT:    store i8 [[TMP538]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP539:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP540:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP541:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP539]], i8 [[TMP540]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP542:%.*]] = extractvalue { i8, i1 } [[TMP541]], 0
// CHECK-NEXT:    [[TMP543:%.*]] = extractvalue { i8, i1 } [[TMP541]], 1
// CHECK-NEXT:    br i1 [[TMP543]], label [[UCX_ATOMIC_EXIT51:%.*]], label [[UCX_ATOMIC_CONT52:%.*]]
// CHECK:       ucx.atomic.cont52:
// CHECK-NEXT:    store i8 [[TMP542]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT51]]
// CHECK:       ucx.atomic.exit51:
// CHECK-NEXT:    [[TMP544:%.*]] = extractvalue { i8, i1 } [[TMP541]], 1
// CHECK-NEXT:    [[TMP545:%.*]] = zext i1 [[TMP544]] to i8
// CHECK-NEXT:    store i8 [[TMP545]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP546:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP547:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP546]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP547]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP548:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP549:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP548]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP549]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP550:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP551:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP550]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP551]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP552:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP553:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP552]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP553]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP554:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP555:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP556:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP554]], i8 [[TMP555]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP557:%.*]] = extractvalue { i8, i1 } [[TMP556]], 0
// CHECK-NEXT:    store i8 [[TMP557]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP558:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP559:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP560:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP558]], i8 [[TMP559]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP561:%.*]] = extractvalue { i8, i1 } [[TMP560]], 0
// CHECK-NEXT:    store i8 [[TMP561]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP562:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP563:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP562]] acq_rel, align 1
// CHECK-NEXT:    [[TMP564:%.*]] = icmp ugt i8 [[TMP563]], [[TMP562]]
// CHECK-NEXT:    [[TMP565:%.*]] = select i1 [[TMP564]], i8 [[TMP562]], i8 [[TMP563]]
// CHECK-NEXT:    store i8 [[TMP565]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP566:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP567:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP566]] acq_rel, align 1
// CHECK-NEXT:    [[TMP568:%.*]] = icmp ult i8 [[TMP567]], [[TMP566]]
// CHECK-NEXT:    [[TMP569:%.*]] = select i1 [[TMP568]], i8 [[TMP566]], i8 [[TMP567]]
// CHECK-NEXT:    store i8 [[TMP569]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP570:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP571:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP570]] acq_rel, align 1
// CHECK-NEXT:    [[TMP572:%.*]] = icmp ult i8 [[TMP571]], [[TMP570]]
// CHECK-NEXT:    [[TMP573:%.*]] = select i1 [[TMP572]], i8 [[TMP570]], i8 [[TMP571]]
// CHECK-NEXT:    store i8 [[TMP573]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP574:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP575:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP574]] acq_rel, align 1
// CHECK-NEXT:    [[TMP576:%.*]] = icmp ugt i8 [[TMP575]], [[TMP574]]
// CHECK-NEXT:    [[TMP577:%.*]] = select i1 [[TMP576]], i8 [[TMP574]], i8 [[TMP575]]
// CHECK-NEXT:    store i8 [[TMP577]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP578:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP579:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP580:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP578]], i8 [[TMP579]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP581:%.*]] = extractvalue { i8, i1 } [[TMP580]], 0
// CHECK-NEXT:    [[TMP582:%.*]] = extractvalue { i8, i1 } [[TMP580]], 1
// CHECK-NEXT:    [[TMP583:%.*]] = select i1 [[TMP582]], i8 [[TMP578]], i8 [[TMP581]]
// CHECK-NEXT:    store i8 [[TMP583]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP584:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP585:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP586:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP584]], i8 [[TMP585]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP587:%.*]] = extractvalue { i8, i1 } [[TMP586]], 0
// CHECK-NEXT:    [[TMP588:%.*]] = extractvalue { i8, i1 } [[TMP586]], 1
// CHECK-NEXT:    [[TMP589:%.*]] = select i1 [[TMP588]], i8 [[TMP584]], i8 [[TMP587]]
// CHECK-NEXT:    store i8 [[TMP589]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP590:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP591:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP592:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP590]], i8 [[TMP591]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP593:%.*]] = extractvalue { i8, i1 } [[TMP592]], 0
// CHECK-NEXT:    [[TMP594:%.*]] = extractvalue { i8, i1 } [[TMP592]], 1
// CHECK-NEXT:    br i1 [[TMP594]], label [[UCX_ATOMIC_EXIT53:%.*]], label [[UCX_ATOMIC_CONT54:%.*]]
// CHECK:       ucx.atomic.cont54:
// CHECK-NEXT:    store i8 [[TMP593]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT53]]
// CHECK:       ucx.atomic.exit53:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP595:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP596:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP597:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP595]], i8 [[TMP596]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP598:%.*]] = extractvalue { i8, i1 } [[TMP597]], 0
// CHECK-NEXT:    [[TMP599:%.*]] = extractvalue { i8, i1 } [[TMP597]], 1
// CHECK-NEXT:    br i1 [[TMP599]], label [[UCX_ATOMIC_EXIT55:%.*]], label [[UCX_ATOMIC_CONT56:%.*]]
// CHECK:       ucx.atomic.cont56:
// CHECK-NEXT:    store i8 [[TMP598]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT55]]
// CHECK:       ucx.atomic.exit55:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP600:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP601:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP602:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP600]], i8 [[TMP601]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP603:%.*]] = extractvalue { i8, i1 } [[TMP602]], 1
// CHECK-NEXT:    [[TMP604:%.*]] = zext i1 [[TMP603]] to i8
// CHECK-NEXT:    store i8 [[TMP604]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP605:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP606:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP607:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP605]], i8 [[TMP606]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP608:%.*]] = extractvalue { i8, i1 } [[TMP607]], 1
// CHECK-NEXT:    [[TMP609:%.*]] = zext i1 [[TMP608]] to i8
// CHECK-NEXT:    store i8 [[TMP609]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP610:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP611:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP612:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP610]], i8 [[TMP611]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP613:%.*]] = extractvalue { i8, i1 } [[TMP612]], 0
// CHECK-NEXT:    [[TMP614:%.*]] = extractvalue { i8, i1 } [[TMP612]], 1
// CHECK-NEXT:    br i1 [[TMP614]], label [[UCX_ATOMIC_EXIT57:%.*]], label [[UCX_ATOMIC_CONT58:%.*]]
// CHECK:       ucx.atomic.cont58:
// CHECK-NEXT:    store i8 [[TMP613]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT57]]
// CHECK:       ucx.atomic.exit57:
// CHECK-NEXT:    [[TMP615:%.*]] = extractvalue { i8, i1 } [[TMP612]], 1
// CHECK-NEXT:    [[TMP616:%.*]] = zext i1 [[TMP615]] to i8
// CHECK-NEXT:    store i8 [[TMP616]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP617:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP618:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP619:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP617]], i8 [[TMP618]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP620:%.*]] = extractvalue { i8, i1 } [[TMP619]], 0
// CHECK-NEXT:    [[TMP621:%.*]] = extractvalue { i8, i1 } [[TMP619]], 1
// CHECK-NEXT:    br i1 [[TMP621]], label [[UCX_ATOMIC_EXIT59:%.*]], label [[UCX_ATOMIC_CONT60:%.*]]
// CHECK:       ucx.atomic.cont60:
// CHECK-NEXT:    store i8 [[TMP620]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT59]]
// CHECK:       ucx.atomic.exit59:
// CHECK-NEXT:    [[TMP622:%.*]] = extractvalue { i8, i1 } [[TMP619]], 1
// CHECK-NEXT:    [[TMP623:%.*]] = zext i1 [[TMP622]] to i8
// CHECK-NEXT:    store i8 [[TMP623]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP624:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP625:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP624]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP625]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP626:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP627:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP626]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP627]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP628:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP629:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP628]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP629]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP630:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP631:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP630]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP631]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP632:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP633:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP634:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP632]], i8 [[TMP633]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP635:%.*]] = extractvalue { i8, i1 } [[TMP634]], 0
// CHECK-NEXT:    store i8 [[TMP635]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP636:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP637:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP638:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP636]], i8 [[TMP637]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP639:%.*]] = extractvalue { i8, i1 } [[TMP638]], 0
// CHECK-NEXT:    store i8 [[TMP639]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP640:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP641:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP640]] acquire, align 1
// CHECK-NEXT:    [[TMP642:%.*]] = icmp ugt i8 [[TMP641]], [[TMP640]]
// CHECK-NEXT:    [[TMP643:%.*]] = select i1 [[TMP642]], i8 [[TMP640]], i8 [[TMP641]]
// CHECK-NEXT:    store i8 [[TMP643]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP644:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP645:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP644]] acquire, align 1
// CHECK-NEXT:    [[TMP646:%.*]] = icmp ult i8 [[TMP645]], [[TMP644]]
// CHECK-NEXT:    [[TMP647:%.*]] = select i1 [[TMP646]], i8 [[TMP644]], i8 [[TMP645]]
// CHECK-NEXT:    store i8 [[TMP647]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP648:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP649:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP648]] acquire, align 1
// CHECK-NEXT:    [[TMP650:%.*]] = icmp ult i8 [[TMP649]], [[TMP648]]
// CHECK-NEXT:    [[TMP651:%.*]] = select i1 [[TMP650]], i8 [[TMP648]], i8 [[TMP649]]
// CHECK-NEXT:    store i8 [[TMP651]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP652:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP653:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP652]] acquire, align 1
// CHECK-NEXT:    [[TMP654:%.*]] = icmp ugt i8 [[TMP653]], [[TMP652]]
// CHECK-NEXT:    [[TMP655:%.*]] = select i1 [[TMP654]], i8 [[TMP652]], i8 [[TMP653]]
// CHECK-NEXT:    store i8 [[TMP655]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP656:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP657:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP658:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP656]], i8 [[TMP657]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP659:%.*]] = extractvalue { i8, i1 } [[TMP658]], 0
// CHECK-NEXT:    [[TMP660:%.*]] = extractvalue { i8, i1 } [[TMP658]], 1
// CHECK-NEXT:    [[TMP661:%.*]] = select i1 [[TMP660]], i8 [[TMP656]], i8 [[TMP659]]
// CHECK-NEXT:    store i8 [[TMP661]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP662:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP663:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP664:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP662]], i8 [[TMP663]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP665:%.*]] = extractvalue { i8, i1 } [[TMP664]], 0
// CHECK-NEXT:    [[TMP666:%.*]] = extractvalue { i8, i1 } [[TMP664]], 1
// CHECK-NEXT:    [[TMP667:%.*]] = select i1 [[TMP666]], i8 [[TMP662]], i8 [[TMP665]]
// CHECK-NEXT:    store i8 [[TMP667]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP668:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP669:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP670:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP668]], i8 [[TMP669]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP671:%.*]] = extractvalue { i8, i1 } [[TMP670]], 0
// CHECK-NEXT:    [[TMP672:%.*]] = extractvalue { i8, i1 } [[TMP670]], 1
// CHECK-NEXT:    br i1 [[TMP672]], label [[UCX_ATOMIC_EXIT61:%.*]], label [[UCX_ATOMIC_CONT62:%.*]]
// CHECK:       ucx.atomic.cont62:
// CHECK-NEXT:    store i8 [[TMP671]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT61]]
// CHECK:       ucx.atomic.exit61:
// CHECK-NEXT:    [[TMP673:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP674:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP675:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP673]], i8 [[TMP674]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP676:%.*]] = extractvalue { i8, i1 } [[TMP675]], 0
// CHECK-NEXT:    [[TMP677:%.*]] = extractvalue { i8, i1 } [[TMP675]], 1
// CHECK-NEXT:    br i1 [[TMP677]], label [[UCX_ATOMIC_EXIT63:%.*]], label [[UCX_ATOMIC_CONT64:%.*]]
// CHECK:       ucx.atomic.cont64:
// CHECK-NEXT:    store i8 [[TMP676]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT63]]
// CHECK:       ucx.atomic.exit63:
// CHECK-NEXT:    [[TMP678:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP679:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP680:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP678]], i8 [[TMP679]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP681:%.*]] = extractvalue { i8, i1 } [[TMP680]], 1
// CHECK-NEXT:    [[TMP682:%.*]] = zext i1 [[TMP681]] to i8
// CHECK-NEXT:    store i8 [[TMP682]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP683:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP684:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP685:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP683]], i8 [[TMP684]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP686:%.*]] = extractvalue { i8, i1 } [[TMP685]], 1
// CHECK-NEXT:    [[TMP687:%.*]] = zext i1 [[TMP686]] to i8
// CHECK-NEXT:    store i8 [[TMP687]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP688:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP689:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP690:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP688]], i8 [[TMP689]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP691:%.*]] = extractvalue { i8, i1 } [[TMP690]], 0
// CHECK-NEXT:    [[TMP692:%.*]] = extractvalue { i8, i1 } [[TMP690]], 1
// CHECK-NEXT:    br i1 [[TMP692]], label [[UCX_ATOMIC_EXIT65:%.*]], label [[UCX_ATOMIC_CONT66:%.*]]
// CHECK:       ucx.atomic.cont66:
// CHECK-NEXT:    store i8 [[TMP691]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT65]]
// CHECK:       ucx.atomic.exit65:
// CHECK-NEXT:    [[TMP693:%.*]] = extractvalue { i8, i1 } [[TMP690]], 1
// CHECK-NEXT:    [[TMP694:%.*]] = zext i1 [[TMP693]] to i8
// CHECK-NEXT:    store i8 [[TMP694]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP695:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP696:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP697:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP695]], i8 [[TMP696]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP698:%.*]] = extractvalue { i8, i1 } [[TMP697]], 0
// CHECK-NEXT:    [[TMP699:%.*]] = extractvalue { i8, i1 } [[TMP697]], 1
// CHECK-NEXT:    br i1 [[TMP699]], label [[UCX_ATOMIC_EXIT67:%.*]], label [[UCX_ATOMIC_CONT68:%.*]]
// CHECK:       ucx.atomic.cont68:
// CHECK-NEXT:    store i8 [[TMP698]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT67]]
// CHECK:       ucx.atomic.exit67:
// CHECK-NEXT:    [[TMP700:%.*]] = extractvalue { i8, i1 } [[TMP697]], 1
// CHECK-NEXT:    [[TMP701:%.*]] = zext i1 [[TMP700]] to i8
// CHECK-NEXT:    store i8 [[TMP701]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP702:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP703:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP702]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP703]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP704:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP705:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP704]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP705]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP706:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP707:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP706]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP707]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP708:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP709:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP708]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP709]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP710:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP711:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP712:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP710]], i8 [[TMP711]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP713:%.*]] = extractvalue { i8, i1 } [[TMP712]], 0
// CHECK-NEXT:    store i8 [[TMP713]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP714:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP715:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP716:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP714]], i8 [[TMP715]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP717:%.*]] = extractvalue { i8, i1 } [[TMP716]], 0
// CHECK-NEXT:    store i8 [[TMP717]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP718:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP719:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP718]] monotonic, align 1
// CHECK-NEXT:    [[TMP720:%.*]] = icmp ugt i8 [[TMP719]], [[TMP718]]
// CHECK-NEXT:    [[TMP721:%.*]] = select i1 [[TMP720]], i8 [[TMP718]], i8 [[TMP719]]
// CHECK-NEXT:    store i8 [[TMP721]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP722:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP723:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP722]] monotonic, align 1
// CHECK-NEXT:    [[TMP724:%.*]] = icmp ult i8 [[TMP723]], [[TMP722]]
// CHECK-NEXT:    [[TMP725:%.*]] = select i1 [[TMP724]], i8 [[TMP722]], i8 [[TMP723]]
// CHECK-NEXT:    store i8 [[TMP725]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP726:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP727:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP726]] monotonic, align 1
// CHECK-NEXT:    [[TMP728:%.*]] = icmp ult i8 [[TMP727]], [[TMP726]]
// CHECK-NEXT:    [[TMP729:%.*]] = select i1 [[TMP728]], i8 [[TMP726]], i8 [[TMP727]]
// CHECK-NEXT:    store i8 [[TMP729]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP730:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP731:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP730]] monotonic, align 1
// CHECK-NEXT:    [[TMP732:%.*]] = icmp ugt i8 [[TMP731]], [[TMP730]]
// CHECK-NEXT:    [[TMP733:%.*]] = select i1 [[TMP732]], i8 [[TMP730]], i8 [[TMP731]]
// CHECK-NEXT:    store i8 [[TMP733]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP734:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP735:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP736:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP734]], i8 [[TMP735]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP737:%.*]] = extractvalue { i8, i1 } [[TMP736]], 0
// CHECK-NEXT:    [[TMP738:%.*]] = extractvalue { i8, i1 } [[TMP736]], 1
// CHECK-NEXT:    [[TMP739:%.*]] = select i1 [[TMP738]], i8 [[TMP734]], i8 [[TMP737]]
// CHECK-NEXT:    store i8 [[TMP739]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP740:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP741:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP742:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP740]], i8 [[TMP741]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP743:%.*]] = extractvalue { i8, i1 } [[TMP742]], 0
// CHECK-NEXT:    [[TMP744:%.*]] = extractvalue { i8, i1 } [[TMP742]], 1
// CHECK-NEXT:    [[TMP745:%.*]] = select i1 [[TMP744]], i8 [[TMP740]], i8 [[TMP743]]
// CHECK-NEXT:    store i8 [[TMP745]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP746:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP747:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP748:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP746]], i8 [[TMP747]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP749:%.*]] = extractvalue { i8, i1 } [[TMP748]], 0
// CHECK-NEXT:    [[TMP750:%.*]] = extractvalue { i8, i1 } [[TMP748]], 1
// CHECK-NEXT:    br i1 [[TMP750]], label [[UCX_ATOMIC_EXIT69:%.*]], label [[UCX_ATOMIC_CONT70:%.*]]
// CHECK:       ucx.atomic.cont70:
// CHECK-NEXT:    store i8 [[TMP749]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT69]]
// CHECK:       ucx.atomic.exit69:
// CHECK-NEXT:    [[TMP751:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP752:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP753:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP751]], i8 [[TMP752]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP754:%.*]] = extractvalue { i8, i1 } [[TMP753]], 0
// CHECK-NEXT:    [[TMP755:%.*]] = extractvalue { i8, i1 } [[TMP753]], 1
// CHECK-NEXT:    br i1 [[TMP755]], label [[UCX_ATOMIC_EXIT71:%.*]], label [[UCX_ATOMIC_CONT72:%.*]]
// CHECK:       ucx.atomic.cont72:
// CHECK-NEXT:    store i8 [[TMP754]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT71]]
// CHECK:       ucx.atomic.exit71:
// CHECK-NEXT:    [[TMP756:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP757:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP758:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP756]], i8 [[TMP757]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP759:%.*]] = extractvalue { i8, i1 } [[TMP758]], 1
// CHECK-NEXT:    [[TMP760:%.*]] = zext i1 [[TMP759]] to i8
// CHECK-NEXT:    store i8 [[TMP760]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP761:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP762:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP763:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP761]], i8 [[TMP762]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP764:%.*]] = extractvalue { i8, i1 } [[TMP763]], 1
// CHECK-NEXT:    [[TMP765:%.*]] = zext i1 [[TMP764]] to i8
// CHECK-NEXT:    store i8 [[TMP765]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP766:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP767:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP768:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP766]], i8 [[TMP767]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP769:%.*]] = extractvalue { i8, i1 } [[TMP768]], 0
// CHECK-NEXT:    [[TMP770:%.*]] = extractvalue { i8, i1 } [[TMP768]], 1
// CHECK-NEXT:    br i1 [[TMP770]], label [[UCX_ATOMIC_EXIT73:%.*]], label [[UCX_ATOMIC_CONT74:%.*]]
// CHECK:       ucx.atomic.cont74:
// CHECK-NEXT:    store i8 [[TMP769]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT73]]
// CHECK:       ucx.atomic.exit73:
// CHECK-NEXT:    [[TMP771:%.*]] = extractvalue { i8, i1 } [[TMP768]], 1
// CHECK-NEXT:    [[TMP772:%.*]] = zext i1 [[TMP771]] to i8
// CHECK-NEXT:    store i8 [[TMP772]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP773:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP774:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP775:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP773]], i8 [[TMP774]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP776:%.*]] = extractvalue { i8, i1 } [[TMP775]], 0
// CHECK-NEXT:    [[TMP777:%.*]] = extractvalue { i8, i1 } [[TMP775]], 1
// CHECK-NEXT:    br i1 [[TMP777]], label [[UCX_ATOMIC_EXIT75:%.*]], label [[UCX_ATOMIC_CONT76:%.*]]
// CHECK:       ucx.atomic.cont76:
// CHECK-NEXT:    store i8 [[TMP776]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT75]]
// CHECK:       ucx.atomic.exit75:
// CHECK-NEXT:    [[TMP778:%.*]] = extractvalue { i8, i1 } [[TMP775]], 1
// CHECK-NEXT:    [[TMP779:%.*]] = zext i1 [[TMP778]] to i8
// CHECK-NEXT:    store i8 [[TMP779]], ptr [[UCR]], align 1
// CHECK-NEXT:    [[TMP780:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP781:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP780]] release, align 1
// CHECK-NEXT:    store i8 [[TMP781]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP782:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP783:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP782]] release, align 1
// CHECK-NEXT:    store i8 [[TMP783]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP784:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP785:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP784]] release, align 1
// CHECK-NEXT:    store i8 [[TMP785]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP786:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP787:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP786]] release, align 1
// CHECK-NEXT:    store i8 [[TMP787]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP788:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP789:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP790:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP788]], i8 [[TMP789]] release monotonic, align 1
// CHECK-NEXT:    [[TMP791:%.*]] = extractvalue { i8, i1 } [[TMP790]], 0
// CHECK-NEXT:    store i8 [[TMP791]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP792:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP793:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP794:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP792]], i8 [[TMP793]] release monotonic, align 1
// CHECK-NEXT:    [[TMP795:%.*]] = extractvalue { i8, i1 } [[TMP794]], 0
// CHECK-NEXT:    store i8 [[TMP795]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP796:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP797:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP796]] release, align 1
// CHECK-NEXT:    [[TMP798:%.*]] = icmp ugt i8 [[TMP797]], [[TMP796]]
// CHECK-NEXT:    [[TMP799:%.*]] = select i1 [[TMP798]], i8 [[TMP796]], i8 [[TMP797]]
// CHECK-NEXT:    store i8 [[TMP799]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP800:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP801:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP800]] release, align 1
// CHECK-NEXT:    [[TMP802:%.*]] = icmp ult i8 [[TMP801]], [[TMP800]]
// CHECK-NEXT:    [[TMP803:%.*]] = select i1 [[TMP802]], i8 [[TMP800]], i8 [[TMP801]]
// CHECK-NEXT:    store i8 [[TMP803]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP804:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP805:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP804]] release, align 1
// CHECK-NEXT:    [[TMP806:%.*]] = icmp ult i8 [[TMP805]], [[TMP804]]
// CHECK-NEXT:    [[TMP807:%.*]] = select i1 [[TMP806]], i8 [[TMP804]], i8 [[TMP805]]
// CHECK-NEXT:    store i8 [[TMP807]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP808:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP809:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP808]] release, align 1
// CHECK-NEXT:    [[TMP810:%.*]] = icmp ugt i8 [[TMP809]], [[TMP808]]
// CHECK-NEXT:    [[TMP811:%.*]] = select i1 [[TMP810]], i8 [[TMP808]], i8 [[TMP809]]
// CHECK-NEXT:    store i8 [[TMP811]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP812:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP813:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP814:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP812]], i8 [[TMP813]] release monotonic, align 1
// CHECK-NEXT:    [[TMP815:%.*]] = extractvalue { i8, i1 } [[TMP814]], 0
// CHECK-NEXT:    [[TMP816:%.*]] = extractvalue { i8, i1 } [[TMP814]], 1
// CHECK-NEXT:    [[TMP817:%.*]] = select i1 [[TMP816]], i8 [[TMP812]], i8 [[TMP815]]
// CHECK-NEXT:    store i8 [[TMP817]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP818:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP819:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP820:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP818]], i8 [[TMP819]] release monotonic, align 1
// CHECK-NEXT:    [[TMP821:%.*]] = extractvalue { i8, i1 } [[TMP820]], 0
// CHECK-NEXT:    [[TMP822:%.*]] = extractvalue { i8, i1 } [[TMP820]], 1
// CHECK-NEXT:    [[TMP823:%.*]] = select i1 [[TMP822]], i8 [[TMP818]], i8 [[TMP821]]
// CHECK-NEXT:    store i8 [[TMP823]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP824:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP825:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP826:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP824]], i8 [[TMP825]] release monotonic, align 1
// CHECK-NEXT:    [[TMP827:%.*]] = extractvalue { i8, i1 } [[TMP826]], 0
// CHECK-NEXT:    [[TMP828:%.*]] = extractvalue { i8, i1 } [[TMP826]], 1
// CHECK-NEXT:    br i1 [[TMP828]], label [[UCX_ATOMIC_EXIT77:%.*]], label [[UCX_ATOMIC_CONT78:%.*]]
// CHECK:       ucx.atomic.cont78:
// CHECK-NEXT:    store i8 [[TMP827]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT77]]
// CHECK:       ucx.atomic.exit77:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP829:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP830:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP831:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP829]], i8 [[TMP830]] release monotonic, align 1
// CHECK-NEXT:    [[TMP832:%.*]] = extractvalue { i8, i1 } [[TMP831]], 0
// CHECK-NEXT:    [[TMP833:%.*]] = extractvalue { i8, i1 } [[TMP831]], 1
// CHECK-NEXT:    br i1 [[TMP833]], label [[UCX_ATOMIC_EXIT79:%.*]], label [[UCX_ATOMIC_CONT80:%.*]]
// CHECK:       ucx.atomic.cont80:
// CHECK-NEXT:    store i8 [[TMP832]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT79]]
// CHECK:       ucx.atomic.exit79:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP834:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP835:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP836:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP834]], i8 [[TMP835]] release monotonic, align 1
// CHECK-NEXT:    [[TMP837:%.*]] = extractvalue { i8, i1 } [[TMP836]], 1
// CHECK-NEXT:    [[TMP838:%.*]] = zext i1 [[TMP837]] to i8
// CHECK-NEXT:    store i8 [[TMP838]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP839:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP840:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP841:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP839]], i8 [[TMP840]] release monotonic, align 1
// CHECK-NEXT:    [[TMP842:%.*]] = extractvalue { i8, i1 } [[TMP841]], 1
// CHECK-NEXT:    [[TMP843:%.*]] = zext i1 [[TMP842]] to i8
// CHECK-NEXT:    store i8 [[TMP843]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP844:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP845:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP846:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP844]], i8 [[TMP845]] release monotonic, align 1
// CHECK-NEXT:    [[TMP847:%.*]] = extractvalue { i8, i1 } [[TMP846]], 0
// CHECK-NEXT:    [[TMP848:%.*]] = extractvalue { i8, i1 } [[TMP846]], 1
// CHECK-NEXT:    br i1 [[TMP848]], label [[UCX_ATOMIC_EXIT81:%.*]], label [[UCX_ATOMIC_CONT82:%.*]]
// CHECK:       ucx.atomic.cont82:
// CHECK-NEXT:    store i8 [[TMP847]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT81]]
// CHECK:       ucx.atomic.exit81:
// CHECK-NEXT:    [[TMP849:%.*]] = extractvalue { i8, i1 } [[TMP846]], 1
// CHECK-NEXT:    [[TMP850:%.*]] = zext i1 [[TMP849]] to i8
// CHECK-NEXT:    store i8 [[TMP850]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP851:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP852:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP853:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP851]], i8 [[TMP852]] release monotonic, align 1
// CHECK-NEXT:    [[TMP854:%.*]] = extractvalue { i8, i1 } [[TMP853]], 0
// CHECK-NEXT:    [[TMP855:%.*]] = extractvalue { i8, i1 } [[TMP853]], 1
// CHECK-NEXT:    br i1 [[TMP855]], label [[UCX_ATOMIC_EXIT83:%.*]], label [[UCX_ATOMIC_CONT84:%.*]]
// CHECK:       ucx.atomic.cont84:
// CHECK-NEXT:    store i8 [[TMP854]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT83]]
// CHECK:       ucx.atomic.exit83:
// CHECK-NEXT:    [[TMP856:%.*]] = extractvalue { i8, i1 } [[TMP853]], 1
// CHECK-NEXT:    [[TMP857:%.*]] = zext i1 [[TMP856]] to i8
// CHECK-NEXT:    store i8 [[TMP857]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP858:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP859:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP858]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP859]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP860:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP861:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP860]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP861]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP862:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP863:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP862]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP863]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP864:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP865:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP864]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP865]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP866:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP867:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP868:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP866]], i8 [[TMP867]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP869:%.*]] = extractvalue { i8, i1 } [[TMP868]], 0
// CHECK-NEXT:    store i8 [[TMP869]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP870:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP871:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP872:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP870]], i8 [[TMP871]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP873:%.*]] = extractvalue { i8, i1 } [[TMP872]], 0
// CHECK-NEXT:    store i8 [[TMP873]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP874:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP875:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP874]] seq_cst, align 1
// CHECK-NEXT:    [[TMP876:%.*]] = icmp ugt i8 [[TMP875]], [[TMP874]]
// CHECK-NEXT:    [[TMP877:%.*]] = select i1 [[TMP876]], i8 [[TMP874]], i8 [[TMP875]]
// CHECK-NEXT:    store i8 [[TMP877]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP878:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP879:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP878]] seq_cst, align 1
// CHECK-NEXT:    [[TMP880:%.*]] = icmp ult i8 [[TMP879]], [[TMP878]]
// CHECK-NEXT:    [[TMP881:%.*]] = select i1 [[TMP880]], i8 [[TMP878]], i8 [[TMP879]]
// CHECK-NEXT:    store i8 [[TMP881]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP882:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP883:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP882]] seq_cst, align 1
// CHECK-NEXT:    [[TMP884:%.*]] = icmp ult i8 [[TMP883]], [[TMP882]]
// CHECK-NEXT:    [[TMP885:%.*]] = select i1 [[TMP884]], i8 [[TMP882]], i8 [[TMP883]]
// CHECK-NEXT:    store i8 [[TMP885]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP886:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP887:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP886]] seq_cst, align 1
// CHECK-NEXT:    [[TMP888:%.*]] = icmp ugt i8 [[TMP887]], [[TMP886]]
// CHECK-NEXT:    [[TMP889:%.*]] = select i1 [[TMP888]], i8 [[TMP886]], i8 [[TMP887]]
// CHECK-NEXT:    store i8 [[TMP889]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP890:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP891:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP892:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP890]], i8 [[TMP891]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP893:%.*]] = extractvalue { i8, i1 } [[TMP892]], 0
// CHECK-NEXT:    [[TMP894:%.*]] = extractvalue { i8, i1 } [[TMP892]], 1
// CHECK-NEXT:    [[TMP895:%.*]] = select i1 [[TMP894]], i8 [[TMP890]], i8 [[TMP893]]
// CHECK-NEXT:    store i8 [[TMP895]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP896:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP897:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP898:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP896]], i8 [[TMP897]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP899:%.*]] = extractvalue { i8, i1 } [[TMP898]], 0
// CHECK-NEXT:    [[TMP900:%.*]] = extractvalue { i8, i1 } [[TMP898]], 1
// CHECK-NEXT:    [[TMP901:%.*]] = select i1 [[TMP900]], i8 [[TMP896]], i8 [[TMP899]]
// CHECK-NEXT:    store i8 [[TMP901]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP902:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP903:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP904:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP902]], i8 [[TMP903]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP905:%.*]] = extractvalue { i8, i1 } [[TMP904]], 0
// CHECK-NEXT:    [[TMP906:%.*]] = extractvalue { i8, i1 } [[TMP904]], 1
// CHECK-NEXT:    br i1 [[TMP906]], label [[UCX_ATOMIC_EXIT85:%.*]], label [[UCX_ATOMIC_CONT86:%.*]]
// CHECK:       ucx.atomic.cont86:
// CHECK-NEXT:    store i8 [[TMP905]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT85]]
// CHECK:       ucx.atomic.exit85:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP907:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP908:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP909:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP907]], i8 [[TMP908]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP910:%.*]] = extractvalue { i8, i1 } [[TMP909]], 0
// CHECK-NEXT:    [[TMP911:%.*]] = extractvalue { i8, i1 } [[TMP909]], 1
// CHECK-NEXT:    br i1 [[TMP911]], label [[UCX_ATOMIC_EXIT87:%.*]], label [[UCX_ATOMIC_CONT88:%.*]]
// CHECK:       ucx.atomic.cont88:
// CHECK-NEXT:    store i8 [[TMP910]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT87]]
// CHECK:       ucx.atomic.exit87:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP912:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP913:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP914:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP912]], i8 [[TMP913]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP915:%.*]] = extractvalue { i8, i1 } [[TMP914]], 1
// CHECK-NEXT:    [[TMP916:%.*]] = zext i1 [[TMP915]] to i8
// CHECK-NEXT:    store i8 [[TMP916]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP917:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP918:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP919:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP917]], i8 [[TMP918]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP920:%.*]] = extractvalue { i8, i1 } [[TMP919]], 1
// CHECK-NEXT:    [[TMP921:%.*]] = zext i1 [[TMP920]] to i8
// CHECK-NEXT:    store i8 [[TMP921]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP922:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP923:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP924:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP922]], i8 [[TMP923]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP925:%.*]] = extractvalue { i8, i1 } [[TMP924]], 0
// CHECK-NEXT:    [[TMP926:%.*]] = extractvalue { i8, i1 } [[TMP924]], 1
// CHECK-NEXT:    br i1 [[TMP926]], label [[UCX_ATOMIC_EXIT89:%.*]], label [[UCX_ATOMIC_CONT90:%.*]]
// CHECK:       ucx.atomic.cont90:
// CHECK-NEXT:    store i8 [[TMP925]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT89]]
// CHECK:       ucx.atomic.exit89:
// CHECK-NEXT:    [[TMP927:%.*]] = extractvalue { i8, i1 } [[TMP924]], 1
// CHECK-NEXT:    [[TMP928:%.*]] = zext i1 [[TMP927]] to i8
// CHECK-NEXT:    store i8 [[TMP928]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP929:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP930:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP931:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP929]], i8 [[TMP930]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP932:%.*]] = extractvalue { i8, i1 } [[TMP931]], 0
// CHECK-NEXT:    [[TMP933:%.*]] = extractvalue { i8, i1 } [[TMP931]], 1
// CHECK-NEXT:    br i1 [[TMP933]], label [[UCX_ATOMIC_EXIT91:%.*]], label [[UCX_ATOMIC_CONT92:%.*]]
// CHECK:       ucx.atomic.cont92:
// CHECK-NEXT:    store i8 [[TMP932]], ptr [[UCV]], align 1
// CHECK-NEXT:    br label [[UCX_ATOMIC_EXIT91]]
// CHECK:       ucx.atomic.exit91:
// CHECK-NEXT:    [[TMP934:%.*]] = extractvalue { i8, i1 } [[TMP931]], 1
// CHECK-NEXT:    [[TMP935:%.*]] = zext i1 [[TMP934]] to i8
// CHECK-NEXT:    store i8 [[TMP935]], ptr [[UCR]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP936:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP937:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP936]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP937]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP938:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP939:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP938]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP939]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP940:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP941:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP940]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP941]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP942:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP943:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP942]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP943]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP944:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP945:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP946:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP944]], i16 [[TMP945]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP947:%.*]] = extractvalue { i16, i1 } [[TMP946]], 0
// CHECK-NEXT:    store i16 [[TMP947]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP948:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP949:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP950:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP948]], i16 [[TMP949]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP951:%.*]] = extractvalue { i16, i1 } [[TMP950]], 0
// CHECK-NEXT:    store i16 [[TMP951]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP952:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP953:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP952]] monotonic, align 2
// CHECK-NEXT:    [[TMP954:%.*]] = icmp sgt i16 [[TMP953]], [[TMP952]]
// CHECK-NEXT:    [[TMP955:%.*]] = select i1 [[TMP954]], i16 [[TMP952]], i16 [[TMP953]]
// CHECK-NEXT:    store i16 [[TMP955]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP956:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP957:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP956]] monotonic, align 2
// CHECK-NEXT:    [[TMP958:%.*]] = icmp slt i16 [[TMP957]], [[TMP956]]
// CHECK-NEXT:    [[TMP959:%.*]] = select i1 [[TMP958]], i16 [[TMP956]], i16 [[TMP957]]
// CHECK-NEXT:    store i16 [[TMP959]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP960:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP961:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP960]] monotonic, align 2
// CHECK-NEXT:    [[TMP962:%.*]] = icmp slt i16 [[TMP961]], [[TMP960]]
// CHECK-NEXT:    [[TMP963:%.*]] = select i1 [[TMP962]], i16 [[TMP960]], i16 [[TMP961]]
// CHECK-NEXT:    store i16 [[TMP963]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP964:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP965:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP964]] monotonic, align 2
// CHECK-NEXT:    [[TMP966:%.*]] = icmp sgt i16 [[TMP965]], [[TMP964]]
// CHECK-NEXT:    [[TMP967:%.*]] = select i1 [[TMP966]], i16 [[TMP964]], i16 [[TMP965]]
// CHECK-NEXT:    store i16 [[TMP967]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP968:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP969:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP970:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP968]], i16 [[TMP969]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP971:%.*]] = extractvalue { i16, i1 } [[TMP970]], 0
// CHECK-NEXT:    [[TMP972:%.*]] = extractvalue { i16, i1 } [[TMP970]], 1
// CHECK-NEXT:    [[TMP973:%.*]] = select i1 [[TMP972]], i16 [[TMP968]], i16 [[TMP971]]
// CHECK-NEXT:    store i16 [[TMP973]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP974:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP975:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP976:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP974]], i16 [[TMP975]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP977:%.*]] = extractvalue { i16, i1 } [[TMP976]], 0
// CHECK-NEXT:    [[TMP978:%.*]] = extractvalue { i16, i1 } [[TMP976]], 1
// CHECK-NEXT:    [[TMP979:%.*]] = select i1 [[TMP978]], i16 [[TMP974]], i16 [[TMP977]]
// CHECK-NEXT:    store i16 [[TMP979]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP980:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP981:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP982:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP980]], i16 [[TMP981]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP983:%.*]] = extractvalue { i16, i1 } [[TMP982]], 0
// CHECK-NEXT:    [[TMP984:%.*]] = extractvalue { i16, i1 } [[TMP982]], 1
// CHECK-NEXT:    br i1 [[TMP984]], label [[SX_ATOMIC_EXIT:%.*]], label [[SX_ATOMIC_CONT:%.*]]
// CHECK:       sx.atomic.cont:
// CHECK-NEXT:    store i16 [[TMP983]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT]]
// CHECK:       sx.atomic.exit:
// CHECK-NEXT:    [[TMP985:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP986:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP987:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP985]], i16 [[TMP986]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP988:%.*]] = extractvalue { i16, i1 } [[TMP987]], 0
// CHECK-NEXT:    [[TMP989:%.*]] = extractvalue { i16, i1 } [[TMP987]], 1
// CHECK-NEXT:    br i1 [[TMP989]], label [[SX_ATOMIC_EXIT93:%.*]], label [[SX_ATOMIC_CONT94:%.*]]
// CHECK:       sx.atomic.cont94:
// CHECK-NEXT:    store i16 [[TMP988]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT93]]
// CHECK:       sx.atomic.exit93:
// CHECK-NEXT:    [[TMP990:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP991:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP992:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP990]], i16 [[TMP991]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP993:%.*]] = extractvalue { i16, i1 } [[TMP992]], 1
// CHECK-NEXT:    [[TMP994:%.*]] = sext i1 [[TMP993]] to i16
// CHECK-NEXT:    store i16 [[TMP994]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP995:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP996:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP997:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP995]], i16 [[TMP996]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP998:%.*]] = extractvalue { i16, i1 } [[TMP997]], 1
// CHECK-NEXT:    [[TMP999:%.*]] = sext i1 [[TMP998]] to i16
// CHECK-NEXT:    store i16 [[TMP999]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1000:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1001:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1002:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1000]], i16 [[TMP1001]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1003:%.*]] = extractvalue { i16, i1 } [[TMP1002]], 0
// CHECK-NEXT:    [[TMP1004:%.*]] = extractvalue { i16, i1 } [[TMP1002]], 1
// CHECK-NEXT:    br i1 [[TMP1004]], label [[SX_ATOMIC_EXIT95:%.*]], label [[SX_ATOMIC_CONT96:%.*]]
// CHECK:       sx.atomic.cont96:
// CHECK-NEXT:    store i16 [[TMP1003]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT95]]
// CHECK:       sx.atomic.exit95:
// CHECK-NEXT:    [[TMP1005:%.*]] = extractvalue { i16, i1 } [[TMP1002]], 1
// CHECK-NEXT:    [[TMP1006:%.*]] = sext i1 [[TMP1005]] to i16
// CHECK-NEXT:    store i16 [[TMP1006]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1007:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1008:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1009:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1007]], i16 [[TMP1008]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1010:%.*]] = extractvalue { i16, i1 } [[TMP1009]], 0
// CHECK-NEXT:    [[TMP1011:%.*]] = extractvalue { i16, i1 } [[TMP1009]], 1
// CHECK-NEXT:    br i1 [[TMP1011]], label [[SX_ATOMIC_EXIT97:%.*]], label [[SX_ATOMIC_CONT98:%.*]]
// CHECK:       sx.atomic.cont98:
// CHECK-NEXT:    store i16 [[TMP1010]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT97]]
// CHECK:       sx.atomic.exit97:
// CHECK-NEXT:    [[TMP1012:%.*]] = extractvalue { i16, i1 } [[TMP1009]], 1
// CHECK-NEXT:    [[TMP1013:%.*]] = sext i1 [[TMP1012]] to i16
// CHECK-NEXT:    store i16 [[TMP1013]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1014:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1015:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1014]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1015]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1016:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1017:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1016]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1017]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1018:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1019:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1018]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1019]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1020:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1021:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1020]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1021]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1022:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1023:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1024:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1022]], i16 [[TMP1023]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1025:%.*]] = extractvalue { i16, i1 } [[TMP1024]], 0
// CHECK-NEXT:    store i16 [[TMP1025]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1026:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1027:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1028:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1026]], i16 [[TMP1027]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1029:%.*]] = extractvalue { i16, i1 } [[TMP1028]], 0
// CHECK-NEXT:    store i16 [[TMP1029]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1030:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1031:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1030]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1032:%.*]] = icmp sgt i16 [[TMP1031]], [[TMP1030]]
// CHECK-NEXT:    [[TMP1033:%.*]] = select i1 [[TMP1032]], i16 [[TMP1030]], i16 [[TMP1031]]
// CHECK-NEXT:    store i16 [[TMP1033]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1034:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1035:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1034]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1036:%.*]] = icmp slt i16 [[TMP1035]], [[TMP1034]]
// CHECK-NEXT:    [[TMP1037:%.*]] = select i1 [[TMP1036]], i16 [[TMP1034]], i16 [[TMP1035]]
// CHECK-NEXT:    store i16 [[TMP1037]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1038:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1039:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1038]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1040:%.*]] = icmp slt i16 [[TMP1039]], [[TMP1038]]
// CHECK-NEXT:    [[TMP1041:%.*]] = select i1 [[TMP1040]], i16 [[TMP1038]], i16 [[TMP1039]]
// CHECK-NEXT:    store i16 [[TMP1041]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1042:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1043:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1042]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1044:%.*]] = icmp sgt i16 [[TMP1043]], [[TMP1042]]
// CHECK-NEXT:    [[TMP1045:%.*]] = select i1 [[TMP1044]], i16 [[TMP1042]], i16 [[TMP1043]]
// CHECK-NEXT:    store i16 [[TMP1045]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1046:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1047:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1048:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1046]], i16 [[TMP1047]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1049:%.*]] = extractvalue { i16, i1 } [[TMP1048]], 0
// CHECK-NEXT:    [[TMP1050:%.*]] = extractvalue { i16, i1 } [[TMP1048]], 1
// CHECK-NEXT:    [[TMP1051:%.*]] = select i1 [[TMP1050]], i16 [[TMP1046]], i16 [[TMP1049]]
// CHECK-NEXT:    store i16 [[TMP1051]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1052:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1053:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1054:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1052]], i16 [[TMP1053]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1055:%.*]] = extractvalue { i16, i1 } [[TMP1054]], 0
// CHECK-NEXT:    [[TMP1056:%.*]] = extractvalue { i16, i1 } [[TMP1054]], 1
// CHECK-NEXT:    [[TMP1057:%.*]] = select i1 [[TMP1056]], i16 [[TMP1052]], i16 [[TMP1055]]
// CHECK-NEXT:    store i16 [[TMP1057]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1058:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1059:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1060:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1058]], i16 [[TMP1059]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1061:%.*]] = extractvalue { i16, i1 } [[TMP1060]], 0
// CHECK-NEXT:    [[TMP1062:%.*]] = extractvalue { i16, i1 } [[TMP1060]], 1
// CHECK-NEXT:    br i1 [[TMP1062]], label [[SX_ATOMIC_EXIT99:%.*]], label [[SX_ATOMIC_CONT100:%.*]]
// CHECK:       sx.atomic.cont100:
// CHECK-NEXT:    store i16 [[TMP1061]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT99]]
// CHECK:       sx.atomic.exit99:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1063:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1064:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1065:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1063]], i16 [[TMP1064]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1066:%.*]] = extractvalue { i16, i1 } [[TMP1065]], 0
// CHECK-NEXT:    [[TMP1067:%.*]] = extractvalue { i16, i1 } [[TMP1065]], 1
// CHECK-NEXT:    br i1 [[TMP1067]], label [[SX_ATOMIC_EXIT101:%.*]], label [[SX_ATOMIC_CONT102:%.*]]
// CHECK:       sx.atomic.cont102:
// CHECK-NEXT:    store i16 [[TMP1066]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT101]]
// CHECK:       sx.atomic.exit101:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1068:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1069:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1070:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1068]], i16 [[TMP1069]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1071:%.*]] = extractvalue { i16, i1 } [[TMP1070]], 1
// CHECK-NEXT:    [[TMP1072:%.*]] = sext i1 [[TMP1071]] to i16
// CHECK-NEXT:    store i16 [[TMP1072]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1073:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1074:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1075:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1073]], i16 [[TMP1074]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1076:%.*]] = extractvalue { i16, i1 } [[TMP1075]], 1
// CHECK-NEXT:    [[TMP1077:%.*]] = sext i1 [[TMP1076]] to i16
// CHECK-NEXT:    store i16 [[TMP1077]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1078:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1079:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1080:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1078]], i16 [[TMP1079]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1081:%.*]] = extractvalue { i16, i1 } [[TMP1080]], 0
// CHECK-NEXT:    [[TMP1082:%.*]] = extractvalue { i16, i1 } [[TMP1080]], 1
// CHECK-NEXT:    br i1 [[TMP1082]], label [[SX_ATOMIC_EXIT103:%.*]], label [[SX_ATOMIC_CONT104:%.*]]
// CHECK:       sx.atomic.cont104:
// CHECK-NEXT:    store i16 [[TMP1081]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT103]]
// CHECK:       sx.atomic.exit103:
// CHECK-NEXT:    [[TMP1083:%.*]] = extractvalue { i16, i1 } [[TMP1080]], 1
// CHECK-NEXT:    [[TMP1084:%.*]] = sext i1 [[TMP1083]] to i16
// CHECK-NEXT:    store i16 [[TMP1084]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1085:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1086:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1087:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1085]], i16 [[TMP1086]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1088:%.*]] = extractvalue { i16, i1 } [[TMP1087]], 0
// CHECK-NEXT:    [[TMP1089:%.*]] = extractvalue { i16, i1 } [[TMP1087]], 1
// CHECK-NEXT:    br i1 [[TMP1089]], label [[SX_ATOMIC_EXIT105:%.*]], label [[SX_ATOMIC_CONT106:%.*]]
// CHECK:       sx.atomic.cont106:
// CHECK-NEXT:    store i16 [[TMP1088]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT105]]
// CHECK:       sx.atomic.exit105:
// CHECK-NEXT:    [[TMP1090:%.*]] = extractvalue { i16, i1 } [[TMP1087]], 1
// CHECK-NEXT:    [[TMP1091:%.*]] = sext i1 [[TMP1090]] to i16
// CHECK-NEXT:    store i16 [[TMP1091]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1092:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1093:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1092]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1093]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1094:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1095:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1094]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1095]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1096:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1097:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1096]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1097]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1098:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1099:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1098]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1099]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1100:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1101:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1102:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1100]], i16 [[TMP1101]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1103:%.*]] = extractvalue { i16, i1 } [[TMP1102]], 0
// CHECK-NEXT:    store i16 [[TMP1103]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1104:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1105:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1106:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1104]], i16 [[TMP1105]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1107:%.*]] = extractvalue { i16, i1 } [[TMP1106]], 0
// CHECK-NEXT:    store i16 [[TMP1107]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1108:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1109:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1108]] acquire, align 2
// CHECK-NEXT:    [[TMP1110:%.*]] = icmp sgt i16 [[TMP1109]], [[TMP1108]]
// CHECK-NEXT:    [[TMP1111:%.*]] = select i1 [[TMP1110]], i16 [[TMP1108]], i16 [[TMP1109]]
// CHECK-NEXT:    store i16 [[TMP1111]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1112:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1113:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1112]] acquire, align 2
// CHECK-NEXT:    [[TMP1114:%.*]] = icmp slt i16 [[TMP1113]], [[TMP1112]]
// CHECK-NEXT:    [[TMP1115:%.*]] = select i1 [[TMP1114]], i16 [[TMP1112]], i16 [[TMP1113]]
// CHECK-NEXT:    store i16 [[TMP1115]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1116:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1117:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1116]] acquire, align 2
// CHECK-NEXT:    [[TMP1118:%.*]] = icmp slt i16 [[TMP1117]], [[TMP1116]]
// CHECK-NEXT:    [[TMP1119:%.*]] = select i1 [[TMP1118]], i16 [[TMP1116]], i16 [[TMP1117]]
// CHECK-NEXT:    store i16 [[TMP1119]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1120:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1121:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1120]] acquire, align 2
// CHECK-NEXT:    [[TMP1122:%.*]] = icmp sgt i16 [[TMP1121]], [[TMP1120]]
// CHECK-NEXT:    [[TMP1123:%.*]] = select i1 [[TMP1122]], i16 [[TMP1120]], i16 [[TMP1121]]
// CHECK-NEXT:    store i16 [[TMP1123]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1124:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1125:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1126:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1124]], i16 [[TMP1125]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1127:%.*]] = extractvalue { i16, i1 } [[TMP1126]], 0
// CHECK-NEXT:    [[TMP1128:%.*]] = extractvalue { i16, i1 } [[TMP1126]], 1
// CHECK-NEXT:    [[TMP1129:%.*]] = select i1 [[TMP1128]], i16 [[TMP1124]], i16 [[TMP1127]]
// CHECK-NEXT:    store i16 [[TMP1129]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1130:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1131:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1132:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1130]], i16 [[TMP1131]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1133:%.*]] = extractvalue { i16, i1 } [[TMP1132]], 0
// CHECK-NEXT:    [[TMP1134:%.*]] = extractvalue { i16, i1 } [[TMP1132]], 1
// CHECK-NEXT:    [[TMP1135:%.*]] = select i1 [[TMP1134]], i16 [[TMP1130]], i16 [[TMP1133]]
// CHECK-NEXT:    store i16 [[TMP1135]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1136:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1137:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1138:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1136]], i16 [[TMP1137]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1139:%.*]] = extractvalue { i16, i1 } [[TMP1138]], 0
// CHECK-NEXT:    [[TMP1140:%.*]] = extractvalue { i16, i1 } [[TMP1138]], 1
// CHECK-NEXT:    br i1 [[TMP1140]], label [[SX_ATOMIC_EXIT107:%.*]], label [[SX_ATOMIC_CONT108:%.*]]
// CHECK:       sx.atomic.cont108:
// CHECK-NEXT:    store i16 [[TMP1139]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT107]]
// CHECK:       sx.atomic.exit107:
// CHECK-NEXT:    [[TMP1141:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1142:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1143:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1141]], i16 [[TMP1142]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1144:%.*]] = extractvalue { i16, i1 } [[TMP1143]], 0
// CHECK-NEXT:    [[TMP1145:%.*]] = extractvalue { i16, i1 } [[TMP1143]], 1
// CHECK-NEXT:    br i1 [[TMP1145]], label [[SX_ATOMIC_EXIT109:%.*]], label [[SX_ATOMIC_CONT110:%.*]]
// CHECK:       sx.atomic.cont110:
// CHECK-NEXT:    store i16 [[TMP1144]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT109]]
// CHECK:       sx.atomic.exit109:
// CHECK-NEXT:    [[TMP1146:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1147:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1148:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1146]], i16 [[TMP1147]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1149:%.*]] = extractvalue { i16, i1 } [[TMP1148]], 1
// CHECK-NEXT:    [[TMP1150:%.*]] = sext i1 [[TMP1149]] to i16
// CHECK-NEXT:    store i16 [[TMP1150]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1151:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1152:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1153:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1151]], i16 [[TMP1152]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1154:%.*]] = extractvalue { i16, i1 } [[TMP1153]], 1
// CHECK-NEXT:    [[TMP1155:%.*]] = sext i1 [[TMP1154]] to i16
// CHECK-NEXT:    store i16 [[TMP1155]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1156:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1157:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1158:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1156]], i16 [[TMP1157]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1159:%.*]] = extractvalue { i16, i1 } [[TMP1158]], 0
// CHECK-NEXT:    [[TMP1160:%.*]] = extractvalue { i16, i1 } [[TMP1158]], 1
// CHECK-NEXT:    br i1 [[TMP1160]], label [[SX_ATOMIC_EXIT111:%.*]], label [[SX_ATOMIC_CONT112:%.*]]
// CHECK:       sx.atomic.cont112:
// CHECK-NEXT:    store i16 [[TMP1159]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT111]]
// CHECK:       sx.atomic.exit111:
// CHECK-NEXT:    [[TMP1161:%.*]] = extractvalue { i16, i1 } [[TMP1158]], 1
// CHECK-NEXT:    [[TMP1162:%.*]] = sext i1 [[TMP1161]] to i16
// CHECK-NEXT:    store i16 [[TMP1162]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1163:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1164:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1165:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1163]], i16 [[TMP1164]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1166:%.*]] = extractvalue { i16, i1 } [[TMP1165]], 0
// CHECK-NEXT:    [[TMP1167:%.*]] = extractvalue { i16, i1 } [[TMP1165]], 1
// CHECK-NEXT:    br i1 [[TMP1167]], label [[SX_ATOMIC_EXIT113:%.*]], label [[SX_ATOMIC_CONT114:%.*]]
// CHECK:       sx.atomic.cont114:
// CHECK-NEXT:    store i16 [[TMP1166]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT113]]
// CHECK:       sx.atomic.exit113:
// CHECK-NEXT:    [[TMP1168:%.*]] = extractvalue { i16, i1 } [[TMP1165]], 1
// CHECK-NEXT:    [[TMP1169:%.*]] = sext i1 [[TMP1168]] to i16
// CHECK-NEXT:    store i16 [[TMP1169]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1170:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1171:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1170]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1171]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1172:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1173:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1172]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1173]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1174:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1175:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1174]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1175]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1176:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1177:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1176]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1177]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1178:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1179:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1180:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1178]], i16 [[TMP1179]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1181:%.*]] = extractvalue { i16, i1 } [[TMP1180]], 0
// CHECK-NEXT:    store i16 [[TMP1181]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1182:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1183:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1184:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1182]], i16 [[TMP1183]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1185:%.*]] = extractvalue { i16, i1 } [[TMP1184]], 0
// CHECK-NEXT:    store i16 [[TMP1185]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1186:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1187:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1186]] monotonic, align 2
// CHECK-NEXT:    [[TMP1188:%.*]] = icmp sgt i16 [[TMP1187]], [[TMP1186]]
// CHECK-NEXT:    [[TMP1189:%.*]] = select i1 [[TMP1188]], i16 [[TMP1186]], i16 [[TMP1187]]
// CHECK-NEXT:    store i16 [[TMP1189]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1190:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1191:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1190]] monotonic, align 2
// CHECK-NEXT:    [[TMP1192:%.*]] = icmp slt i16 [[TMP1191]], [[TMP1190]]
// CHECK-NEXT:    [[TMP1193:%.*]] = select i1 [[TMP1192]], i16 [[TMP1190]], i16 [[TMP1191]]
// CHECK-NEXT:    store i16 [[TMP1193]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1194:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1195:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1194]] monotonic, align 2
// CHECK-NEXT:    [[TMP1196:%.*]] = icmp slt i16 [[TMP1195]], [[TMP1194]]
// CHECK-NEXT:    [[TMP1197:%.*]] = select i1 [[TMP1196]], i16 [[TMP1194]], i16 [[TMP1195]]
// CHECK-NEXT:    store i16 [[TMP1197]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1198:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1199:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1198]] monotonic, align 2
// CHECK-NEXT:    [[TMP1200:%.*]] = icmp sgt i16 [[TMP1199]], [[TMP1198]]
// CHECK-NEXT:    [[TMP1201:%.*]] = select i1 [[TMP1200]], i16 [[TMP1198]], i16 [[TMP1199]]
// CHECK-NEXT:    store i16 [[TMP1201]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1202:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1203:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1204:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1202]], i16 [[TMP1203]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1205:%.*]] = extractvalue { i16, i1 } [[TMP1204]], 0
// CHECK-NEXT:    [[TMP1206:%.*]] = extractvalue { i16, i1 } [[TMP1204]], 1
// CHECK-NEXT:    [[TMP1207:%.*]] = select i1 [[TMP1206]], i16 [[TMP1202]], i16 [[TMP1205]]
// CHECK-NEXT:    store i16 [[TMP1207]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1208:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1209:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1210:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1208]], i16 [[TMP1209]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1211:%.*]] = extractvalue { i16, i1 } [[TMP1210]], 0
// CHECK-NEXT:    [[TMP1212:%.*]] = extractvalue { i16, i1 } [[TMP1210]], 1
// CHECK-NEXT:    [[TMP1213:%.*]] = select i1 [[TMP1212]], i16 [[TMP1208]], i16 [[TMP1211]]
// CHECK-NEXT:    store i16 [[TMP1213]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP1214:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1215:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1216:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1214]], i16 [[TMP1215]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1217:%.*]] = extractvalue { i16, i1 } [[TMP1216]], 0
// CHECK-NEXT:    [[TMP1218:%.*]] = extractvalue { i16, i1 } [[TMP1216]], 1
// CHECK-NEXT:    br i1 [[TMP1218]], label [[SX_ATOMIC_EXIT115:%.*]], label [[SX_ATOMIC_CONT116:%.*]]
// CHECK:       sx.atomic.cont116:
// CHECK-NEXT:    store i16 [[TMP1217]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT115]]
// CHECK:       sx.atomic.exit115:
// CHECK-NEXT:    [[TMP1219:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1220:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1221:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1219]], i16 [[TMP1220]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1222:%.*]] = extractvalue { i16, i1 } [[TMP1221]], 0
// CHECK-NEXT:    [[TMP1223:%.*]] = extractvalue { i16, i1 } [[TMP1221]], 1
// CHECK-NEXT:    br i1 [[TMP1223]], label [[SX_ATOMIC_EXIT117:%.*]], label [[SX_ATOMIC_CONT118:%.*]]
// CHECK:       sx.atomic.cont118:
// CHECK-NEXT:    store i16 [[TMP1222]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT117]]
// CHECK:       sx.atomic.exit117:
// CHECK-NEXT:    [[TMP1224:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1225:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1226:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1224]], i16 [[TMP1225]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1227:%.*]] = extractvalue { i16, i1 } [[TMP1226]], 1
// CHECK-NEXT:    [[TMP1228:%.*]] = sext i1 [[TMP1227]] to i16
// CHECK-NEXT:    store i16 [[TMP1228]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1229:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1230:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1231:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1229]], i16 [[TMP1230]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1232:%.*]] = extractvalue { i16, i1 } [[TMP1231]], 1
// CHECK-NEXT:    [[TMP1233:%.*]] = sext i1 [[TMP1232]] to i16
// CHECK-NEXT:    store i16 [[TMP1233]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1234:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1235:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1236:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1234]], i16 [[TMP1235]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1237:%.*]] = extractvalue { i16, i1 } [[TMP1236]], 0
// CHECK-NEXT:    [[TMP1238:%.*]] = extractvalue { i16, i1 } [[TMP1236]], 1
// CHECK-NEXT:    br i1 [[TMP1238]], label [[SX_ATOMIC_EXIT119:%.*]], label [[SX_ATOMIC_CONT120:%.*]]
// CHECK:       sx.atomic.cont120:
// CHECK-NEXT:    store i16 [[TMP1237]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT119]]
// CHECK:       sx.atomic.exit119:
// CHECK-NEXT:    [[TMP1239:%.*]] = extractvalue { i16, i1 } [[TMP1236]], 1
// CHECK-NEXT:    [[TMP1240:%.*]] = sext i1 [[TMP1239]] to i16
// CHECK-NEXT:    store i16 [[TMP1240]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1241:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1242:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1243:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1241]], i16 [[TMP1242]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1244:%.*]] = extractvalue { i16, i1 } [[TMP1243]], 0
// CHECK-NEXT:    [[TMP1245:%.*]] = extractvalue { i16, i1 } [[TMP1243]], 1
// CHECK-NEXT:    br i1 [[TMP1245]], label [[SX_ATOMIC_EXIT121:%.*]], label [[SX_ATOMIC_CONT122:%.*]]
// CHECK:       sx.atomic.cont122:
// CHECK-NEXT:    store i16 [[TMP1244]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT121]]
// CHECK:       sx.atomic.exit121:
// CHECK-NEXT:    [[TMP1246:%.*]] = extractvalue { i16, i1 } [[TMP1243]], 1
// CHECK-NEXT:    [[TMP1247:%.*]] = sext i1 [[TMP1246]] to i16
// CHECK-NEXT:    store i16 [[TMP1247]], ptr [[SR]], align 2
// CHECK-NEXT:    [[TMP1248:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1249:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1248]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1249]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1250:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1251:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1250]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1251]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1252:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1253:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1252]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1253]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1254:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1255:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1254]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1255]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1256:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1257:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1258:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1256]], i16 [[TMP1257]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1259:%.*]] = extractvalue { i16, i1 } [[TMP1258]], 0
// CHECK-NEXT:    store i16 [[TMP1259]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1260:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1261:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1262:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1260]], i16 [[TMP1261]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1263:%.*]] = extractvalue { i16, i1 } [[TMP1262]], 0
// CHECK-NEXT:    store i16 [[TMP1263]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1264:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1265:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1264]] release, align 2
// CHECK-NEXT:    [[TMP1266:%.*]] = icmp sgt i16 [[TMP1265]], [[TMP1264]]
// CHECK-NEXT:    [[TMP1267:%.*]] = select i1 [[TMP1266]], i16 [[TMP1264]], i16 [[TMP1265]]
// CHECK-NEXT:    store i16 [[TMP1267]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1268:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1269:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1268]] release, align 2
// CHECK-NEXT:    [[TMP1270:%.*]] = icmp slt i16 [[TMP1269]], [[TMP1268]]
// CHECK-NEXT:    [[TMP1271:%.*]] = select i1 [[TMP1270]], i16 [[TMP1268]], i16 [[TMP1269]]
// CHECK-NEXT:    store i16 [[TMP1271]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1272:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1273:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1272]] release, align 2
// CHECK-NEXT:    [[TMP1274:%.*]] = icmp slt i16 [[TMP1273]], [[TMP1272]]
// CHECK-NEXT:    [[TMP1275:%.*]] = select i1 [[TMP1274]], i16 [[TMP1272]], i16 [[TMP1273]]
// CHECK-NEXT:    store i16 [[TMP1275]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1276:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1277:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1276]] release, align 2
// CHECK-NEXT:    [[TMP1278:%.*]] = icmp sgt i16 [[TMP1277]], [[TMP1276]]
// CHECK-NEXT:    [[TMP1279:%.*]] = select i1 [[TMP1278]], i16 [[TMP1276]], i16 [[TMP1277]]
// CHECK-NEXT:    store i16 [[TMP1279]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1280:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1281:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1282:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1280]], i16 [[TMP1281]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1283:%.*]] = extractvalue { i16, i1 } [[TMP1282]], 0
// CHECK-NEXT:    [[TMP1284:%.*]] = extractvalue { i16, i1 } [[TMP1282]], 1
// CHECK-NEXT:    [[TMP1285:%.*]] = select i1 [[TMP1284]], i16 [[TMP1280]], i16 [[TMP1283]]
// CHECK-NEXT:    store i16 [[TMP1285]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1286:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1287:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1288:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1286]], i16 [[TMP1287]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1289:%.*]] = extractvalue { i16, i1 } [[TMP1288]], 0
// CHECK-NEXT:    [[TMP1290:%.*]] = extractvalue { i16, i1 } [[TMP1288]], 1
// CHECK-NEXT:    [[TMP1291:%.*]] = select i1 [[TMP1290]], i16 [[TMP1286]], i16 [[TMP1289]]
// CHECK-NEXT:    store i16 [[TMP1291]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1292:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1293:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1294:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1292]], i16 [[TMP1293]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1295:%.*]] = extractvalue { i16, i1 } [[TMP1294]], 0
// CHECK-NEXT:    [[TMP1296:%.*]] = extractvalue { i16, i1 } [[TMP1294]], 1
// CHECK-NEXT:    br i1 [[TMP1296]], label [[SX_ATOMIC_EXIT123:%.*]], label [[SX_ATOMIC_CONT124:%.*]]
// CHECK:       sx.atomic.cont124:
// CHECK-NEXT:    store i16 [[TMP1295]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT123]]
// CHECK:       sx.atomic.exit123:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1297:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1298:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1299:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1297]], i16 [[TMP1298]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1300:%.*]] = extractvalue { i16, i1 } [[TMP1299]], 0
// CHECK-NEXT:    [[TMP1301:%.*]] = extractvalue { i16, i1 } [[TMP1299]], 1
// CHECK-NEXT:    br i1 [[TMP1301]], label [[SX_ATOMIC_EXIT125:%.*]], label [[SX_ATOMIC_CONT126:%.*]]
// CHECK:       sx.atomic.cont126:
// CHECK-NEXT:    store i16 [[TMP1300]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT125]]
// CHECK:       sx.atomic.exit125:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1302:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1303:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1304:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1302]], i16 [[TMP1303]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1305:%.*]] = extractvalue { i16, i1 } [[TMP1304]], 1
// CHECK-NEXT:    [[TMP1306:%.*]] = sext i1 [[TMP1305]] to i16
// CHECK-NEXT:    store i16 [[TMP1306]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1307:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1308:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1309:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1307]], i16 [[TMP1308]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1310:%.*]] = extractvalue { i16, i1 } [[TMP1309]], 1
// CHECK-NEXT:    [[TMP1311:%.*]] = sext i1 [[TMP1310]] to i16
// CHECK-NEXT:    store i16 [[TMP1311]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1312:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1313:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1314:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1312]], i16 [[TMP1313]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1315:%.*]] = extractvalue { i16, i1 } [[TMP1314]], 0
// CHECK-NEXT:    [[TMP1316:%.*]] = extractvalue { i16, i1 } [[TMP1314]], 1
// CHECK-NEXT:    br i1 [[TMP1316]], label [[SX_ATOMIC_EXIT127:%.*]], label [[SX_ATOMIC_CONT128:%.*]]
// CHECK:       sx.atomic.cont128:
// CHECK-NEXT:    store i16 [[TMP1315]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT127]]
// CHECK:       sx.atomic.exit127:
// CHECK-NEXT:    [[TMP1317:%.*]] = extractvalue { i16, i1 } [[TMP1314]], 1
// CHECK-NEXT:    [[TMP1318:%.*]] = sext i1 [[TMP1317]] to i16
// CHECK-NEXT:    store i16 [[TMP1318]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1319:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1320:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1321:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1319]], i16 [[TMP1320]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1322:%.*]] = extractvalue { i16, i1 } [[TMP1321]], 0
// CHECK-NEXT:    [[TMP1323:%.*]] = extractvalue { i16, i1 } [[TMP1321]], 1
// CHECK-NEXT:    br i1 [[TMP1323]], label [[SX_ATOMIC_EXIT129:%.*]], label [[SX_ATOMIC_CONT130:%.*]]
// CHECK:       sx.atomic.cont130:
// CHECK-NEXT:    store i16 [[TMP1322]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT129]]
// CHECK:       sx.atomic.exit129:
// CHECK-NEXT:    [[TMP1324:%.*]] = extractvalue { i16, i1 } [[TMP1321]], 1
// CHECK-NEXT:    [[TMP1325:%.*]] = sext i1 [[TMP1324]] to i16
// CHECK-NEXT:    store i16 [[TMP1325]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1326:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1327:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1326]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1327]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1328:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1329:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1328]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1329]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1330:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1331:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1330]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1331]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1332:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1333:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1332]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1333]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1334:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1335:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1336:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1334]], i16 [[TMP1335]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1337:%.*]] = extractvalue { i16, i1 } [[TMP1336]], 0
// CHECK-NEXT:    store i16 [[TMP1337]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1338:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1339:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1340:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1338]], i16 [[TMP1339]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1341:%.*]] = extractvalue { i16, i1 } [[TMP1340]], 0
// CHECK-NEXT:    store i16 [[TMP1341]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1342:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1343:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1342]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1344:%.*]] = icmp sgt i16 [[TMP1343]], [[TMP1342]]
// CHECK-NEXT:    [[TMP1345:%.*]] = select i1 [[TMP1344]], i16 [[TMP1342]], i16 [[TMP1343]]
// CHECK-NEXT:    store i16 [[TMP1345]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1346:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1347:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1346]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1348:%.*]] = icmp slt i16 [[TMP1347]], [[TMP1346]]
// CHECK-NEXT:    [[TMP1349:%.*]] = select i1 [[TMP1348]], i16 [[TMP1346]], i16 [[TMP1347]]
// CHECK-NEXT:    store i16 [[TMP1349]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1350:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1351:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP1350]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1352:%.*]] = icmp slt i16 [[TMP1351]], [[TMP1350]]
// CHECK-NEXT:    [[TMP1353:%.*]] = select i1 [[TMP1352]], i16 [[TMP1350]], i16 [[TMP1351]]
// CHECK-NEXT:    store i16 [[TMP1353]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1354:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1355:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP1354]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1356:%.*]] = icmp sgt i16 [[TMP1355]], [[TMP1354]]
// CHECK-NEXT:    [[TMP1357:%.*]] = select i1 [[TMP1356]], i16 [[TMP1354]], i16 [[TMP1355]]
// CHECK-NEXT:    store i16 [[TMP1357]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1358:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1359:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1360:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1358]], i16 [[TMP1359]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1361:%.*]] = extractvalue { i16, i1 } [[TMP1360]], 0
// CHECK-NEXT:    [[TMP1362:%.*]] = extractvalue { i16, i1 } [[TMP1360]], 1
// CHECK-NEXT:    [[TMP1363:%.*]] = select i1 [[TMP1362]], i16 [[TMP1358]], i16 [[TMP1361]]
// CHECK-NEXT:    store i16 [[TMP1363]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1364:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1365:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1366:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1364]], i16 [[TMP1365]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1367:%.*]] = extractvalue { i16, i1 } [[TMP1366]], 0
// CHECK-NEXT:    [[TMP1368:%.*]] = extractvalue { i16, i1 } [[TMP1366]], 1
// CHECK-NEXT:    [[TMP1369:%.*]] = select i1 [[TMP1368]], i16 [[TMP1364]], i16 [[TMP1367]]
// CHECK-NEXT:    store i16 [[TMP1369]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1370:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1371:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1372:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1370]], i16 [[TMP1371]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1373:%.*]] = extractvalue { i16, i1 } [[TMP1372]], 0
// CHECK-NEXT:    [[TMP1374:%.*]] = extractvalue { i16, i1 } [[TMP1372]], 1
// CHECK-NEXT:    br i1 [[TMP1374]], label [[SX_ATOMIC_EXIT131:%.*]], label [[SX_ATOMIC_CONT132:%.*]]
// CHECK:       sx.atomic.cont132:
// CHECK-NEXT:    store i16 [[TMP1373]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT131]]
// CHECK:       sx.atomic.exit131:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1375:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1376:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1377:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1375]], i16 [[TMP1376]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1378:%.*]] = extractvalue { i16, i1 } [[TMP1377]], 0
// CHECK-NEXT:    [[TMP1379:%.*]] = extractvalue { i16, i1 } [[TMP1377]], 1
// CHECK-NEXT:    br i1 [[TMP1379]], label [[SX_ATOMIC_EXIT133:%.*]], label [[SX_ATOMIC_CONT134:%.*]]
// CHECK:       sx.atomic.cont134:
// CHECK-NEXT:    store i16 [[TMP1378]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT133]]
// CHECK:       sx.atomic.exit133:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1380:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1381:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1382:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1380]], i16 [[TMP1381]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1383:%.*]] = extractvalue { i16, i1 } [[TMP1382]], 1
// CHECK-NEXT:    [[TMP1384:%.*]] = sext i1 [[TMP1383]] to i16
// CHECK-NEXT:    store i16 [[TMP1384]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1385:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1386:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1387:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1385]], i16 [[TMP1386]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1388:%.*]] = extractvalue { i16, i1 } [[TMP1387]], 1
// CHECK-NEXT:    [[TMP1389:%.*]] = sext i1 [[TMP1388]] to i16
// CHECK-NEXT:    store i16 [[TMP1389]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1390:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1391:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1392:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1390]], i16 [[TMP1391]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1393:%.*]] = extractvalue { i16, i1 } [[TMP1392]], 0
// CHECK-NEXT:    [[TMP1394:%.*]] = extractvalue { i16, i1 } [[TMP1392]], 1
// CHECK-NEXT:    br i1 [[TMP1394]], label [[SX_ATOMIC_EXIT135:%.*]], label [[SX_ATOMIC_CONT136:%.*]]
// CHECK:       sx.atomic.cont136:
// CHECK-NEXT:    store i16 [[TMP1393]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT135]]
// CHECK:       sx.atomic.exit135:
// CHECK-NEXT:    [[TMP1395:%.*]] = extractvalue { i16, i1 } [[TMP1392]], 1
// CHECK-NEXT:    [[TMP1396:%.*]] = sext i1 [[TMP1395]] to i16
// CHECK-NEXT:    store i16 [[TMP1396]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1397:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1398:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP1399:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP1397]], i16 [[TMP1398]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1400:%.*]] = extractvalue { i16, i1 } [[TMP1399]], 0
// CHECK-NEXT:    [[TMP1401:%.*]] = extractvalue { i16, i1 } [[TMP1399]], 1
// CHECK-NEXT:    br i1 [[TMP1401]], label [[SX_ATOMIC_EXIT137:%.*]], label [[SX_ATOMIC_CONT138:%.*]]
// CHECK:       sx.atomic.cont138:
// CHECK-NEXT:    store i16 [[TMP1400]], ptr [[SV]], align 2
// CHECK-NEXT:    br label [[SX_ATOMIC_EXIT137]]
// CHECK:       sx.atomic.exit137:
// CHECK-NEXT:    [[TMP1402:%.*]] = extractvalue { i16, i1 } [[TMP1399]], 1
// CHECK-NEXT:    [[TMP1403:%.*]] = sext i1 [[TMP1402]] to i16
// CHECK-NEXT:    store i16 [[TMP1403]], ptr [[SR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1404:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1405:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1404]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1405]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1406:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1407:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1406]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1407]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1408:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1409:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1408]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1409]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1410:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1411:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1410]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1411]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1412:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1413:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1414:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1412]], i16 [[TMP1413]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1415:%.*]] = extractvalue { i16, i1 } [[TMP1414]], 0
// CHECK-NEXT:    store i16 [[TMP1415]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1416:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1417:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1418:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1416]], i16 [[TMP1417]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1419:%.*]] = extractvalue { i16, i1 } [[TMP1418]], 0
// CHECK-NEXT:    store i16 [[TMP1419]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1420:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1421:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1420]] monotonic, align 2
// CHECK-NEXT:    [[TMP1422:%.*]] = icmp ugt i16 [[TMP1421]], [[TMP1420]]
// CHECK-NEXT:    [[TMP1423:%.*]] = select i1 [[TMP1422]], i16 [[TMP1420]], i16 [[TMP1421]]
// CHECK-NEXT:    store i16 [[TMP1423]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1424:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1425:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1424]] monotonic, align 2
// CHECK-NEXT:    [[TMP1426:%.*]] = icmp ult i16 [[TMP1425]], [[TMP1424]]
// CHECK-NEXT:    [[TMP1427:%.*]] = select i1 [[TMP1426]], i16 [[TMP1424]], i16 [[TMP1425]]
// CHECK-NEXT:    store i16 [[TMP1427]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1428:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1429:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1428]] monotonic, align 2
// CHECK-NEXT:    [[TMP1430:%.*]] = icmp ult i16 [[TMP1429]], [[TMP1428]]
// CHECK-NEXT:    [[TMP1431:%.*]] = select i1 [[TMP1430]], i16 [[TMP1428]], i16 [[TMP1429]]
// CHECK-NEXT:    store i16 [[TMP1431]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1432:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1433:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1432]] monotonic, align 2
// CHECK-NEXT:    [[TMP1434:%.*]] = icmp ugt i16 [[TMP1433]], [[TMP1432]]
// CHECK-NEXT:    [[TMP1435:%.*]] = select i1 [[TMP1434]], i16 [[TMP1432]], i16 [[TMP1433]]
// CHECK-NEXT:    store i16 [[TMP1435]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1436:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1437:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1438:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1436]], i16 [[TMP1437]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1439:%.*]] = extractvalue { i16, i1 } [[TMP1438]], 0
// CHECK-NEXT:    [[TMP1440:%.*]] = extractvalue { i16, i1 } [[TMP1438]], 1
// CHECK-NEXT:    [[TMP1441:%.*]] = select i1 [[TMP1440]], i16 [[TMP1436]], i16 [[TMP1439]]
// CHECK-NEXT:    store i16 [[TMP1441]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1442:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1443:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1444:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1442]], i16 [[TMP1443]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1445:%.*]] = extractvalue { i16, i1 } [[TMP1444]], 0
// CHECK-NEXT:    [[TMP1446:%.*]] = extractvalue { i16, i1 } [[TMP1444]], 1
// CHECK-NEXT:    [[TMP1447:%.*]] = select i1 [[TMP1446]], i16 [[TMP1442]], i16 [[TMP1445]]
// CHECK-NEXT:    store i16 [[TMP1447]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1448:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1449:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1450:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1448]], i16 [[TMP1449]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1451:%.*]] = extractvalue { i16, i1 } [[TMP1450]], 0
// CHECK-NEXT:    [[TMP1452:%.*]] = extractvalue { i16, i1 } [[TMP1450]], 1
// CHECK-NEXT:    br i1 [[TMP1452]], label [[USX_ATOMIC_EXIT:%.*]], label [[USX_ATOMIC_CONT:%.*]]
// CHECK:       usx.atomic.cont:
// CHECK-NEXT:    store i16 [[TMP1451]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT]]
// CHECK:       usx.atomic.exit:
// CHECK-NEXT:    [[TMP1453:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1454:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1455:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1453]], i16 [[TMP1454]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1456:%.*]] = extractvalue { i16, i1 } [[TMP1455]], 0
// CHECK-NEXT:    [[TMP1457:%.*]] = extractvalue { i16, i1 } [[TMP1455]], 1
// CHECK-NEXT:    br i1 [[TMP1457]], label [[USX_ATOMIC_EXIT139:%.*]], label [[USX_ATOMIC_CONT140:%.*]]
// CHECK:       usx.atomic.cont140:
// CHECK-NEXT:    store i16 [[TMP1456]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT139]]
// CHECK:       usx.atomic.exit139:
// CHECK-NEXT:    [[TMP1458:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1459:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1460:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1458]], i16 [[TMP1459]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1461:%.*]] = extractvalue { i16, i1 } [[TMP1460]], 1
// CHECK-NEXT:    [[TMP1462:%.*]] = zext i1 [[TMP1461]] to i16
// CHECK-NEXT:    store i16 [[TMP1462]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1463:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1464:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1465:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1463]], i16 [[TMP1464]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1466:%.*]] = extractvalue { i16, i1 } [[TMP1465]], 1
// CHECK-NEXT:    [[TMP1467:%.*]] = zext i1 [[TMP1466]] to i16
// CHECK-NEXT:    store i16 [[TMP1467]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1468:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1469:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1470:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1468]], i16 [[TMP1469]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1471:%.*]] = extractvalue { i16, i1 } [[TMP1470]], 0
// CHECK-NEXT:    [[TMP1472:%.*]] = extractvalue { i16, i1 } [[TMP1470]], 1
// CHECK-NEXT:    br i1 [[TMP1472]], label [[USX_ATOMIC_EXIT141:%.*]], label [[USX_ATOMIC_CONT142:%.*]]
// CHECK:       usx.atomic.cont142:
// CHECK-NEXT:    store i16 [[TMP1471]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT141]]
// CHECK:       usx.atomic.exit141:
// CHECK-NEXT:    [[TMP1473:%.*]] = extractvalue { i16, i1 } [[TMP1470]], 1
// CHECK-NEXT:    [[TMP1474:%.*]] = zext i1 [[TMP1473]] to i16
// CHECK-NEXT:    store i16 [[TMP1474]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1475:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1476:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1477:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1475]], i16 [[TMP1476]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1478:%.*]] = extractvalue { i16, i1 } [[TMP1477]], 0
// CHECK-NEXT:    [[TMP1479:%.*]] = extractvalue { i16, i1 } [[TMP1477]], 1
// CHECK-NEXT:    br i1 [[TMP1479]], label [[USX_ATOMIC_EXIT143:%.*]], label [[USX_ATOMIC_CONT144:%.*]]
// CHECK:       usx.atomic.cont144:
// CHECK-NEXT:    store i16 [[TMP1478]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT143]]
// CHECK:       usx.atomic.exit143:
// CHECK-NEXT:    [[TMP1480:%.*]] = extractvalue { i16, i1 } [[TMP1477]], 1
// CHECK-NEXT:    [[TMP1481:%.*]] = zext i1 [[TMP1480]] to i16
// CHECK-NEXT:    store i16 [[TMP1481]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1482:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1483:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1482]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1483]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1484:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1485:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1484]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1485]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1486:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1487:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1486]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1487]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1488:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1489:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1488]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP1489]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1490:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1491:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1492:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1490]], i16 [[TMP1491]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1493:%.*]] = extractvalue { i16, i1 } [[TMP1492]], 0
// CHECK-NEXT:    store i16 [[TMP1493]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1494:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1495:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1496:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1494]], i16 [[TMP1495]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1497:%.*]] = extractvalue { i16, i1 } [[TMP1496]], 0
// CHECK-NEXT:    store i16 [[TMP1497]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1498:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1499:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1498]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1500:%.*]] = icmp ugt i16 [[TMP1499]], [[TMP1498]]
// CHECK-NEXT:    [[TMP1501:%.*]] = select i1 [[TMP1500]], i16 [[TMP1498]], i16 [[TMP1499]]
// CHECK-NEXT:    store i16 [[TMP1501]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1502:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1503:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1502]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1504:%.*]] = icmp ult i16 [[TMP1503]], [[TMP1502]]
// CHECK-NEXT:    [[TMP1505:%.*]] = select i1 [[TMP1504]], i16 [[TMP1502]], i16 [[TMP1503]]
// CHECK-NEXT:    store i16 [[TMP1505]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1506:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1507:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1506]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1508:%.*]] = icmp ult i16 [[TMP1507]], [[TMP1506]]
// CHECK-NEXT:    [[TMP1509:%.*]] = select i1 [[TMP1508]], i16 [[TMP1506]], i16 [[TMP1507]]
// CHECK-NEXT:    store i16 [[TMP1509]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1510:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1511:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1510]] acq_rel, align 2
// CHECK-NEXT:    [[TMP1512:%.*]] = icmp ugt i16 [[TMP1511]], [[TMP1510]]
// CHECK-NEXT:    [[TMP1513:%.*]] = select i1 [[TMP1512]], i16 [[TMP1510]], i16 [[TMP1511]]
// CHECK-NEXT:    store i16 [[TMP1513]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1514:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1515:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1516:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1514]], i16 [[TMP1515]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1517:%.*]] = extractvalue { i16, i1 } [[TMP1516]], 0
// CHECK-NEXT:    [[TMP1518:%.*]] = extractvalue { i16, i1 } [[TMP1516]], 1
// CHECK-NEXT:    [[TMP1519:%.*]] = select i1 [[TMP1518]], i16 [[TMP1514]], i16 [[TMP1517]]
// CHECK-NEXT:    store i16 [[TMP1519]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1520:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1521:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1522:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1520]], i16 [[TMP1521]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1523:%.*]] = extractvalue { i16, i1 } [[TMP1522]], 0
// CHECK-NEXT:    [[TMP1524:%.*]] = extractvalue { i16, i1 } [[TMP1522]], 1
// CHECK-NEXT:    [[TMP1525:%.*]] = select i1 [[TMP1524]], i16 [[TMP1520]], i16 [[TMP1523]]
// CHECK-NEXT:    store i16 [[TMP1525]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1526:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1527:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1528:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1526]], i16 [[TMP1527]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1529:%.*]] = extractvalue { i16, i1 } [[TMP1528]], 0
// CHECK-NEXT:    [[TMP1530:%.*]] = extractvalue { i16, i1 } [[TMP1528]], 1
// CHECK-NEXT:    br i1 [[TMP1530]], label [[USX_ATOMIC_EXIT145:%.*]], label [[USX_ATOMIC_CONT146:%.*]]
// CHECK:       usx.atomic.cont146:
// CHECK-NEXT:    store i16 [[TMP1529]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT145]]
// CHECK:       usx.atomic.exit145:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1531:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1532:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1533:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1531]], i16 [[TMP1532]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1534:%.*]] = extractvalue { i16, i1 } [[TMP1533]], 0
// CHECK-NEXT:    [[TMP1535:%.*]] = extractvalue { i16, i1 } [[TMP1533]], 1
// CHECK-NEXT:    br i1 [[TMP1535]], label [[USX_ATOMIC_EXIT147:%.*]], label [[USX_ATOMIC_CONT148:%.*]]
// CHECK:       usx.atomic.cont148:
// CHECK-NEXT:    store i16 [[TMP1534]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT147]]
// CHECK:       usx.atomic.exit147:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1536:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1537:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1538:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1536]], i16 [[TMP1537]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1539:%.*]] = extractvalue { i16, i1 } [[TMP1538]], 1
// CHECK-NEXT:    [[TMP1540:%.*]] = zext i1 [[TMP1539]] to i16
// CHECK-NEXT:    store i16 [[TMP1540]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1541:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1542:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1543:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1541]], i16 [[TMP1542]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1544:%.*]] = extractvalue { i16, i1 } [[TMP1543]], 1
// CHECK-NEXT:    [[TMP1545:%.*]] = zext i1 [[TMP1544]] to i16
// CHECK-NEXT:    store i16 [[TMP1545]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1546:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1547:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1548:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1546]], i16 [[TMP1547]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1549:%.*]] = extractvalue { i16, i1 } [[TMP1548]], 0
// CHECK-NEXT:    [[TMP1550:%.*]] = extractvalue { i16, i1 } [[TMP1548]], 1
// CHECK-NEXT:    br i1 [[TMP1550]], label [[USX_ATOMIC_EXIT149:%.*]], label [[USX_ATOMIC_CONT150:%.*]]
// CHECK:       usx.atomic.cont150:
// CHECK-NEXT:    store i16 [[TMP1549]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT149]]
// CHECK:       usx.atomic.exit149:
// CHECK-NEXT:    [[TMP1551:%.*]] = extractvalue { i16, i1 } [[TMP1548]], 1
// CHECK-NEXT:    [[TMP1552:%.*]] = zext i1 [[TMP1551]] to i16
// CHECK-NEXT:    store i16 [[TMP1552]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1553:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1554:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1555:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1553]], i16 [[TMP1554]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP1556:%.*]] = extractvalue { i16, i1 } [[TMP1555]], 0
// CHECK-NEXT:    [[TMP1557:%.*]] = extractvalue { i16, i1 } [[TMP1555]], 1
// CHECK-NEXT:    br i1 [[TMP1557]], label [[USX_ATOMIC_EXIT151:%.*]], label [[USX_ATOMIC_CONT152:%.*]]
// CHECK:       usx.atomic.cont152:
// CHECK-NEXT:    store i16 [[TMP1556]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT151]]
// CHECK:       usx.atomic.exit151:
// CHECK-NEXT:    [[TMP1558:%.*]] = extractvalue { i16, i1 } [[TMP1555]], 1
// CHECK-NEXT:    [[TMP1559:%.*]] = zext i1 [[TMP1558]] to i16
// CHECK-NEXT:    store i16 [[TMP1559]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1560:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1561:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1560]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1561]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1562:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1563:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1562]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1563]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1564:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1565:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1564]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1565]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1566:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1567:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1566]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP1567]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1568:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1569:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1570:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1568]], i16 [[TMP1569]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1571:%.*]] = extractvalue { i16, i1 } [[TMP1570]], 0
// CHECK-NEXT:    store i16 [[TMP1571]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1572:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1573:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1574:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1572]], i16 [[TMP1573]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1575:%.*]] = extractvalue { i16, i1 } [[TMP1574]], 0
// CHECK-NEXT:    store i16 [[TMP1575]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1576:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1577:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1576]] acquire, align 2
// CHECK-NEXT:    [[TMP1578:%.*]] = icmp ugt i16 [[TMP1577]], [[TMP1576]]
// CHECK-NEXT:    [[TMP1579:%.*]] = select i1 [[TMP1578]], i16 [[TMP1576]], i16 [[TMP1577]]
// CHECK-NEXT:    store i16 [[TMP1579]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1580:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1581:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1580]] acquire, align 2
// CHECK-NEXT:    [[TMP1582:%.*]] = icmp ult i16 [[TMP1581]], [[TMP1580]]
// CHECK-NEXT:    [[TMP1583:%.*]] = select i1 [[TMP1582]], i16 [[TMP1580]], i16 [[TMP1581]]
// CHECK-NEXT:    store i16 [[TMP1583]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1584:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1585:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1584]] acquire, align 2
// CHECK-NEXT:    [[TMP1586:%.*]] = icmp ult i16 [[TMP1585]], [[TMP1584]]
// CHECK-NEXT:    [[TMP1587:%.*]] = select i1 [[TMP1586]], i16 [[TMP1584]], i16 [[TMP1585]]
// CHECK-NEXT:    store i16 [[TMP1587]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1588:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1589:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1588]] acquire, align 2
// CHECK-NEXT:    [[TMP1590:%.*]] = icmp ugt i16 [[TMP1589]], [[TMP1588]]
// CHECK-NEXT:    [[TMP1591:%.*]] = select i1 [[TMP1590]], i16 [[TMP1588]], i16 [[TMP1589]]
// CHECK-NEXT:    store i16 [[TMP1591]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1592:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1593:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1594:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1592]], i16 [[TMP1593]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1595:%.*]] = extractvalue { i16, i1 } [[TMP1594]], 0
// CHECK-NEXT:    [[TMP1596:%.*]] = extractvalue { i16, i1 } [[TMP1594]], 1
// CHECK-NEXT:    [[TMP1597:%.*]] = select i1 [[TMP1596]], i16 [[TMP1592]], i16 [[TMP1595]]
// CHECK-NEXT:    store i16 [[TMP1597]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1598:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1599:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1600:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1598]], i16 [[TMP1599]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1601:%.*]] = extractvalue { i16, i1 } [[TMP1600]], 0
// CHECK-NEXT:    [[TMP1602:%.*]] = extractvalue { i16, i1 } [[TMP1600]], 1
// CHECK-NEXT:    [[TMP1603:%.*]] = select i1 [[TMP1602]], i16 [[TMP1598]], i16 [[TMP1601]]
// CHECK-NEXT:    store i16 [[TMP1603]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1604:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1605:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1606:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1604]], i16 [[TMP1605]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1607:%.*]] = extractvalue { i16, i1 } [[TMP1606]], 0
// CHECK-NEXT:    [[TMP1608:%.*]] = extractvalue { i16, i1 } [[TMP1606]], 1
// CHECK-NEXT:    br i1 [[TMP1608]], label [[USX_ATOMIC_EXIT153:%.*]], label [[USX_ATOMIC_CONT154:%.*]]
// CHECK:       usx.atomic.cont154:
// CHECK-NEXT:    store i16 [[TMP1607]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT153]]
// CHECK:       usx.atomic.exit153:
// CHECK-NEXT:    [[TMP1609:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1610:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1611:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1609]], i16 [[TMP1610]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1612:%.*]] = extractvalue { i16, i1 } [[TMP1611]], 0
// CHECK-NEXT:    [[TMP1613:%.*]] = extractvalue { i16, i1 } [[TMP1611]], 1
// CHECK-NEXT:    br i1 [[TMP1613]], label [[USX_ATOMIC_EXIT155:%.*]], label [[USX_ATOMIC_CONT156:%.*]]
// CHECK:       usx.atomic.cont156:
// CHECK-NEXT:    store i16 [[TMP1612]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT155]]
// CHECK:       usx.atomic.exit155:
// CHECK-NEXT:    [[TMP1614:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1615:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1616:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1614]], i16 [[TMP1615]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1617:%.*]] = extractvalue { i16, i1 } [[TMP1616]], 1
// CHECK-NEXT:    [[TMP1618:%.*]] = zext i1 [[TMP1617]] to i16
// CHECK-NEXT:    store i16 [[TMP1618]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1619:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1620:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1621:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1619]], i16 [[TMP1620]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1622:%.*]] = extractvalue { i16, i1 } [[TMP1621]], 1
// CHECK-NEXT:    [[TMP1623:%.*]] = zext i1 [[TMP1622]] to i16
// CHECK-NEXT:    store i16 [[TMP1623]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1624:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1625:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1626:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1624]], i16 [[TMP1625]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1627:%.*]] = extractvalue { i16, i1 } [[TMP1626]], 0
// CHECK-NEXT:    [[TMP1628:%.*]] = extractvalue { i16, i1 } [[TMP1626]], 1
// CHECK-NEXT:    br i1 [[TMP1628]], label [[USX_ATOMIC_EXIT157:%.*]], label [[USX_ATOMIC_CONT158:%.*]]
// CHECK:       usx.atomic.cont158:
// CHECK-NEXT:    store i16 [[TMP1627]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT157]]
// CHECK:       usx.atomic.exit157:
// CHECK-NEXT:    [[TMP1629:%.*]] = extractvalue { i16, i1 } [[TMP1626]], 1
// CHECK-NEXT:    [[TMP1630:%.*]] = zext i1 [[TMP1629]] to i16
// CHECK-NEXT:    store i16 [[TMP1630]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1631:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1632:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1633:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1631]], i16 [[TMP1632]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP1634:%.*]] = extractvalue { i16, i1 } [[TMP1633]], 0
// CHECK-NEXT:    [[TMP1635:%.*]] = extractvalue { i16, i1 } [[TMP1633]], 1
// CHECK-NEXT:    br i1 [[TMP1635]], label [[USX_ATOMIC_EXIT159:%.*]], label [[USX_ATOMIC_CONT160:%.*]]
// CHECK:       usx.atomic.cont160:
// CHECK-NEXT:    store i16 [[TMP1634]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT159]]
// CHECK:       usx.atomic.exit159:
// CHECK-NEXT:    [[TMP1636:%.*]] = extractvalue { i16, i1 } [[TMP1633]], 1
// CHECK-NEXT:    [[TMP1637:%.*]] = zext i1 [[TMP1636]] to i16
// CHECK-NEXT:    store i16 [[TMP1637]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1638:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1639:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1638]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1639]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1640:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1641:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1640]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1641]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1642:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1643:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1642]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1643]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1644:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1645:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1644]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1645]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1646:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1647:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1648:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1646]], i16 [[TMP1647]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1649:%.*]] = extractvalue { i16, i1 } [[TMP1648]], 0
// CHECK-NEXT:    store i16 [[TMP1649]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1650:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1651:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1652:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1650]], i16 [[TMP1651]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1653:%.*]] = extractvalue { i16, i1 } [[TMP1652]], 0
// CHECK-NEXT:    store i16 [[TMP1653]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1654:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1655:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1654]] monotonic, align 2
// CHECK-NEXT:    [[TMP1656:%.*]] = icmp ugt i16 [[TMP1655]], [[TMP1654]]
// CHECK-NEXT:    [[TMP1657:%.*]] = select i1 [[TMP1656]], i16 [[TMP1654]], i16 [[TMP1655]]
// CHECK-NEXT:    store i16 [[TMP1657]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1658:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1659:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1658]] monotonic, align 2
// CHECK-NEXT:    [[TMP1660:%.*]] = icmp ult i16 [[TMP1659]], [[TMP1658]]
// CHECK-NEXT:    [[TMP1661:%.*]] = select i1 [[TMP1660]], i16 [[TMP1658]], i16 [[TMP1659]]
// CHECK-NEXT:    store i16 [[TMP1661]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1662:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1663:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1662]] monotonic, align 2
// CHECK-NEXT:    [[TMP1664:%.*]] = icmp ult i16 [[TMP1663]], [[TMP1662]]
// CHECK-NEXT:    [[TMP1665:%.*]] = select i1 [[TMP1664]], i16 [[TMP1662]], i16 [[TMP1663]]
// CHECK-NEXT:    store i16 [[TMP1665]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1666:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1667:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1666]] monotonic, align 2
// CHECK-NEXT:    [[TMP1668:%.*]] = icmp ugt i16 [[TMP1667]], [[TMP1666]]
// CHECK-NEXT:    [[TMP1669:%.*]] = select i1 [[TMP1668]], i16 [[TMP1666]], i16 [[TMP1667]]
// CHECK-NEXT:    store i16 [[TMP1669]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1670:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1671:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1672:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1670]], i16 [[TMP1671]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1673:%.*]] = extractvalue { i16, i1 } [[TMP1672]], 0
// CHECK-NEXT:    [[TMP1674:%.*]] = extractvalue { i16, i1 } [[TMP1672]], 1
// CHECK-NEXT:    [[TMP1675:%.*]] = select i1 [[TMP1674]], i16 [[TMP1670]], i16 [[TMP1673]]
// CHECK-NEXT:    store i16 [[TMP1675]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1676:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1677:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1678:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1676]], i16 [[TMP1677]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1679:%.*]] = extractvalue { i16, i1 } [[TMP1678]], 0
// CHECK-NEXT:    [[TMP1680:%.*]] = extractvalue { i16, i1 } [[TMP1678]], 1
// CHECK-NEXT:    [[TMP1681:%.*]] = select i1 [[TMP1680]], i16 [[TMP1676]], i16 [[TMP1679]]
// CHECK-NEXT:    store i16 [[TMP1681]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP1682:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1683:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1684:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1682]], i16 [[TMP1683]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1685:%.*]] = extractvalue { i16, i1 } [[TMP1684]], 0
// CHECK-NEXT:    [[TMP1686:%.*]] = extractvalue { i16, i1 } [[TMP1684]], 1
// CHECK-NEXT:    br i1 [[TMP1686]], label [[USX_ATOMIC_EXIT161:%.*]], label [[USX_ATOMIC_CONT162:%.*]]
// CHECK:       usx.atomic.cont162:
// CHECK-NEXT:    store i16 [[TMP1685]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT161]]
// CHECK:       usx.atomic.exit161:
// CHECK-NEXT:    [[TMP1687:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1688:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1689:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1687]], i16 [[TMP1688]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1690:%.*]] = extractvalue { i16, i1 } [[TMP1689]], 0
// CHECK-NEXT:    [[TMP1691:%.*]] = extractvalue { i16, i1 } [[TMP1689]], 1
// CHECK-NEXT:    br i1 [[TMP1691]], label [[USX_ATOMIC_EXIT163:%.*]], label [[USX_ATOMIC_CONT164:%.*]]
// CHECK:       usx.atomic.cont164:
// CHECK-NEXT:    store i16 [[TMP1690]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT163]]
// CHECK:       usx.atomic.exit163:
// CHECK-NEXT:    [[TMP1692:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1693:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1694:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1692]], i16 [[TMP1693]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1695:%.*]] = extractvalue { i16, i1 } [[TMP1694]], 1
// CHECK-NEXT:    [[TMP1696:%.*]] = zext i1 [[TMP1695]] to i16
// CHECK-NEXT:    store i16 [[TMP1696]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1697:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1698:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1699:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1697]], i16 [[TMP1698]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1700:%.*]] = extractvalue { i16, i1 } [[TMP1699]], 1
// CHECK-NEXT:    [[TMP1701:%.*]] = zext i1 [[TMP1700]] to i16
// CHECK-NEXT:    store i16 [[TMP1701]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1702:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1703:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1704:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1702]], i16 [[TMP1703]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1705:%.*]] = extractvalue { i16, i1 } [[TMP1704]], 0
// CHECK-NEXT:    [[TMP1706:%.*]] = extractvalue { i16, i1 } [[TMP1704]], 1
// CHECK-NEXT:    br i1 [[TMP1706]], label [[USX_ATOMIC_EXIT165:%.*]], label [[USX_ATOMIC_CONT166:%.*]]
// CHECK:       usx.atomic.cont166:
// CHECK-NEXT:    store i16 [[TMP1705]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT165]]
// CHECK:       usx.atomic.exit165:
// CHECK-NEXT:    [[TMP1707:%.*]] = extractvalue { i16, i1 } [[TMP1704]], 1
// CHECK-NEXT:    [[TMP1708:%.*]] = zext i1 [[TMP1707]] to i16
// CHECK-NEXT:    store i16 [[TMP1708]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1709:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1710:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1711:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1709]], i16 [[TMP1710]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP1712:%.*]] = extractvalue { i16, i1 } [[TMP1711]], 0
// CHECK-NEXT:    [[TMP1713:%.*]] = extractvalue { i16, i1 } [[TMP1711]], 1
// CHECK-NEXT:    br i1 [[TMP1713]], label [[USX_ATOMIC_EXIT167:%.*]], label [[USX_ATOMIC_CONT168:%.*]]
// CHECK:       usx.atomic.cont168:
// CHECK-NEXT:    store i16 [[TMP1712]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT167]]
// CHECK:       usx.atomic.exit167:
// CHECK-NEXT:    [[TMP1714:%.*]] = extractvalue { i16, i1 } [[TMP1711]], 1
// CHECK-NEXT:    [[TMP1715:%.*]] = zext i1 [[TMP1714]] to i16
// CHECK-NEXT:    store i16 [[TMP1715]], ptr [[USR]], align 2
// CHECK-NEXT:    [[TMP1716:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1717:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1716]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1717]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1718:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1719:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1718]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1719]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1720:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1721:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1720]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1721]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1722:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1723:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1722]] release, align 2
// CHECK-NEXT:    store i16 [[TMP1723]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1724:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1725:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1726:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1724]], i16 [[TMP1725]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1727:%.*]] = extractvalue { i16, i1 } [[TMP1726]], 0
// CHECK-NEXT:    store i16 [[TMP1727]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1728:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1729:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1730:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1728]], i16 [[TMP1729]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1731:%.*]] = extractvalue { i16, i1 } [[TMP1730]], 0
// CHECK-NEXT:    store i16 [[TMP1731]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1732:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1733:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1732]] release, align 2
// CHECK-NEXT:    [[TMP1734:%.*]] = icmp ugt i16 [[TMP1733]], [[TMP1732]]
// CHECK-NEXT:    [[TMP1735:%.*]] = select i1 [[TMP1734]], i16 [[TMP1732]], i16 [[TMP1733]]
// CHECK-NEXT:    store i16 [[TMP1735]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1736:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1737:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1736]] release, align 2
// CHECK-NEXT:    [[TMP1738:%.*]] = icmp ult i16 [[TMP1737]], [[TMP1736]]
// CHECK-NEXT:    [[TMP1739:%.*]] = select i1 [[TMP1738]], i16 [[TMP1736]], i16 [[TMP1737]]
// CHECK-NEXT:    store i16 [[TMP1739]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1740:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1741:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1740]] release, align 2
// CHECK-NEXT:    [[TMP1742:%.*]] = icmp ult i16 [[TMP1741]], [[TMP1740]]
// CHECK-NEXT:    [[TMP1743:%.*]] = select i1 [[TMP1742]], i16 [[TMP1740]], i16 [[TMP1741]]
// CHECK-NEXT:    store i16 [[TMP1743]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1744:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1745:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1744]] release, align 2
// CHECK-NEXT:    [[TMP1746:%.*]] = icmp ugt i16 [[TMP1745]], [[TMP1744]]
// CHECK-NEXT:    [[TMP1747:%.*]] = select i1 [[TMP1746]], i16 [[TMP1744]], i16 [[TMP1745]]
// CHECK-NEXT:    store i16 [[TMP1747]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1748:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1749:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1750:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1748]], i16 [[TMP1749]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1751:%.*]] = extractvalue { i16, i1 } [[TMP1750]], 0
// CHECK-NEXT:    [[TMP1752:%.*]] = extractvalue { i16, i1 } [[TMP1750]], 1
// CHECK-NEXT:    [[TMP1753:%.*]] = select i1 [[TMP1752]], i16 [[TMP1748]], i16 [[TMP1751]]
// CHECK-NEXT:    store i16 [[TMP1753]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1754:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1755:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1756:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1754]], i16 [[TMP1755]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1757:%.*]] = extractvalue { i16, i1 } [[TMP1756]], 0
// CHECK-NEXT:    [[TMP1758:%.*]] = extractvalue { i16, i1 } [[TMP1756]], 1
// CHECK-NEXT:    [[TMP1759:%.*]] = select i1 [[TMP1758]], i16 [[TMP1754]], i16 [[TMP1757]]
// CHECK-NEXT:    store i16 [[TMP1759]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1760:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1761:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1762:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1760]], i16 [[TMP1761]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1763:%.*]] = extractvalue { i16, i1 } [[TMP1762]], 0
// CHECK-NEXT:    [[TMP1764:%.*]] = extractvalue { i16, i1 } [[TMP1762]], 1
// CHECK-NEXT:    br i1 [[TMP1764]], label [[USX_ATOMIC_EXIT169:%.*]], label [[USX_ATOMIC_CONT170:%.*]]
// CHECK:       usx.atomic.cont170:
// CHECK-NEXT:    store i16 [[TMP1763]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT169]]
// CHECK:       usx.atomic.exit169:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1765:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1766:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1767:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1765]], i16 [[TMP1766]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1768:%.*]] = extractvalue { i16, i1 } [[TMP1767]], 0
// CHECK-NEXT:    [[TMP1769:%.*]] = extractvalue { i16, i1 } [[TMP1767]], 1
// CHECK-NEXT:    br i1 [[TMP1769]], label [[USX_ATOMIC_EXIT171:%.*]], label [[USX_ATOMIC_CONT172:%.*]]
// CHECK:       usx.atomic.cont172:
// CHECK-NEXT:    store i16 [[TMP1768]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT171]]
// CHECK:       usx.atomic.exit171:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1770:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1771:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1772:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1770]], i16 [[TMP1771]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1773:%.*]] = extractvalue { i16, i1 } [[TMP1772]], 1
// CHECK-NEXT:    [[TMP1774:%.*]] = zext i1 [[TMP1773]] to i16
// CHECK-NEXT:    store i16 [[TMP1774]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1775:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1776:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1777:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1775]], i16 [[TMP1776]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1778:%.*]] = extractvalue { i16, i1 } [[TMP1777]], 1
// CHECK-NEXT:    [[TMP1779:%.*]] = zext i1 [[TMP1778]] to i16
// CHECK-NEXT:    store i16 [[TMP1779]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1780:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1781:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1782:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1780]], i16 [[TMP1781]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1783:%.*]] = extractvalue { i16, i1 } [[TMP1782]], 0
// CHECK-NEXT:    [[TMP1784:%.*]] = extractvalue { i16, i1 } [[TMP1782]], 1
// CHECK-NEXT:    br i1 [[TMP1784]], label [[USX_ATOMIC_EXIT173:%.*]], label [[USX_ATOMIC_CONT174:%.*]]
// CHECK:       usx.atomic.cont174:
// CHECK-NEXT:    store i16 [[TMP1783]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT173]]
// CHECK:       usx.atomic.exit173:
// CHECK-NEXT:    [[TMP1785:%.*]] = extractvalue { i16, i1 } [[TMP1782]], 1
// CHECK-NEXT:    [[TMP1786:%.*]] = zext i1 [[TMP1785]] to i16
// CHECK-NEXT:    store i16 [[TMP1786]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1787:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1788:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1789:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1787]], i16 [[TMP1788]] release monotonic, align 2
// CHECK-NEXT:    [[TMP1790:%.*]] = extractvalue { i16, i1 } [[TMP1789]], 0
// CHECK-NEXT:    [[TMP1791:%.*]] = extractvalue { i16, i1 } [[TMP1789]], 1
// CHECK-NEXT:    br i1 [[TMP1791]], label [[USX_ATOMIC_EXIT175:%.*]], label [[USX_ATOMIC_CONT176:%.*]]
// CHECK:       usx.atomic.cont176:
// CHECK-NEXT:    store i16 [[TMP1790]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT175]]
// CHECK:       usx.atomic.exit175:
// CHECK-NEXT:    [[TMP1792:%.*]] = extractvalue { i16, i1 } [[TMP1789]], 1
// CHECK-NEXT:    [[TMP1793:%.*]] = zext i1 [[TMP1792]] to i16
// CHECK-NEXT:    store i16 [[TMP1793]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1794:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1795:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1794]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1795]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1796:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1797:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1796]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1797]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1798:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1799:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1798]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1799]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1800:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1801:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1800]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP1801]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1802:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1803:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1804:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1802]], i16 [[TMP1803]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1805:%.*]] = extractvalue { i16, i1 } [[TMP1804]], 0
// CHECK-NEXT:    store i16 [[TMP1805]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1806:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1807:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1808:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1806]], i16 [[TMP1807]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1809:%.*]] = extractvalue { i16, i1 } [[TMP1808]], 0
// CHECK-NEXT:    store i16 [[TMP1809]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1810:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1811:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1810]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1812:%.*]] = icmp ugt i16 [[TMP1811]], [[TMP1810]]
// CHECK-NEXT:    [[TMP1813:%.*]] = select i1 [[TMP1812]], i16 [[TMP1810]], i16 [[TMP1811]]
// CHECK-NEXT:    store i16 [[TMP1813]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1814:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1815:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1814]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1816:%.*]] = icmp ult i16 [[TMP1815]], [[TMP1814]]
// CHECK-NEXT:    [[TMP1817:%.*]] = select i1 [[TMP1816]], i16 [[TMP1814]], i16 [[TMP1815]]
// CHECK-NEXT:    store i16 [[TMP1817]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1818:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1819:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP1818]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1820:%.*]] = icmp ult i16 [[TMP1819]], [[TMP1818]]
// CHECK-NEXT:    [[TMP1821:%.*]] = select i1 [[TMP1820]], i16 [[TMP1818]], i16 [[TMP1819]]
// CHECK-NEXT:    store i16 [[TMP1821]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1822:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1823:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP1822]] seq_cst, align 2
// CHECK-NEXT:    [[TMP1824:%.*]] = icmp ugt i16 [[TMP1823]], [[TMP1822]]
// CHECK-NEXT:    [[TMP1825:%.*]] = select i1 [[TMP1824]], i16 [[TMP1822]], i16 [[TMP1823]]
// CHECK-NEXT:    store i16 [[TMP1825]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1826:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1827:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1828:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1826]], i16 [[TMP1827]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1829:%.*]] = extractvalue { i16, i1 } [[TMP1828]], 0
// CHECK-NEXT:    [[TMP1830:%.*]] = extractvalue { i16, i1 } [[TMP1828]], 1
// CHECK-NEXT:    [[TMP1831:%.*]] = select i1 [[TMP1830]], i16 [[TMP1826]], i16 [[TMP1829]]
// CHECK-NEXT:    store i16 [[TMP1831]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1832:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1833:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1834:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1832]], i16 [[TMP1833]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1835:%.*]] = extractvalue { i16, i1 } [[TMP1834]], 0
// CHECK-NEXT:    [[TMP1836:%.*]] = extractvalue { i16, i1 } [[TMP1834]], 1
// CHECK-NEXT:    [[TMP1837:%.*]] = select i1 [[TMP1836]], i16 [[TMP1832]], i16 [[TMP1835]]
// CHECK-NEXT:    store i16 [[TMP1837]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1838:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1839:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1840:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1838]], i16 [[TMP1839]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1841:%.*]] = extractvalue { i16, i1 } [[TMP1840]], 0
// CHECK-NEXT:    [[TMP1842:%.*]] = extractvalue { i16, i1 } [[TMP1840]], 1
// CHECK-NEXT:    br i1 [[TMP1842]], label [[USX_ATOMIC_EXIT177:%.*]], label [[USX_ATOMIC_CONT178:%.*]]
// CHECK:       usx.atomic.cont178:
// CHECK-NEXT:    store i16 [[TMP1841]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT177]]
// CHECK:       usx.atomic.exit177:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1843:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1844:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1845:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1843]], i16 [[TMP1844]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1846:%.*]] = extractvalue { i16, i1 } [[TMP1845]], 0
// CHECK-NEXT:    [[TMP1847:%.*]] = extractvalue { i16, i1 } [[TMP1845]], 1
// CHECK-NEXT:    br i1 [[TMP1847]], label [[USX_ATOMIC_EXIT179:%.*]], label [[USX_ATOMIC_CONT180:%.*]]
// CHECK:       usx.atomic.cont180:
// CHECK-NEXT:    store i16 [[TMP1846]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT179]]
// CHECK:       usx.atomic.exit179:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1848:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1849:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1850:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1848]], i16 [[TMP1849]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1851:%.*]] = extractvalue { i16, i1 } [[TMP1850]], 1
// CHECK-NEXT:    [[TMP1852:%.*]] = zext i1 [[TMP1851]] to i16
// CHECK-NEXT:    store i16 [[TMP1852]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1853:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1854:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1855:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1853]], i16 [[TMP1854]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1856:%.*]] = extractvalue { i16, i1 } [[TMP1855]], 1
// CHECK-NEXT:    [[TMP1857:%.*]] = zext i1 [[TMP1856]] to i16
// CHECK-NEXT:    store i16 [[TMP1857]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1858:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1859:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1860:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1858]], i16 [[TMP1859]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1861:%.*]] = extractvalue { i16, i1 } [[TMP1860]], 0
// CHECK-NEXT:    [[TMP1862:%.*]] = extractvalue { i16, i1 } [[TMP1860]], 1
// CHECK-NEXT:    br i1 [[TMP1862]], label [[USX_ATOMIC_EXIT181:%.*]], label [[USX_ATOMIC_CONT182:%.*]]
// CHECK:       usx.atomic.cont182:
// CHECK-NEXT:    store i16 [[TMP1861]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT181]]
// CHECK:       usx.atomic.exit181:
// CHECK-NEXT:    [[TMP1863:%.*]] = extractvalue { i16, i1 } [[TMP1860]], 1
// CHECK-NEXT:    [[TMP1864:%.*]] = zext i1 [[TMP1863]] to i16
// CHECK-NEXT:    store i16 [[TMP1864]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1865:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1866:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP1867:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP1865]], i16 [[TMP1866]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP1868:%.*]] = extractvalue { i16, i1 } [[TMP1867]], 0
// CHECK-NEXT:    [[TMP1869:%.*]] = extractvalue { i16, i1 } [[TMP1867]], 1
// CHECK-NEXT:    br i1 [[TMP1869]], label [[USX_ATOMIC_EXIT183:%.*]], label [[USX_ATOMIC_CONT184:%.*]]
// CHECK:       usx.atomic.cont184:
// CHECK-NEXT:    store i16 [[TMP1868]], ptr [[USV]], align 2
// CHECK-NEXT:    br label [[USX_ATOMIC_EXIT183]]
// CHECK:       usx.atomic.exit183:
// CHECK-NEXT:    [[TMP1870:%.*]] = extractvalue { i16, i1 } [[TMP1867]], 1
// CHECK-NEXT:    [[TMP1871:%.*]] = zext i1 [[TMP1870]] to i16
// CHECK-NEXT:    store i16 [[TMP1871]], ptr [[USR]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1872:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1873:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1872]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP1873]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1874:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1875:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1874]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP1875]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1876:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1877:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1876]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP1877]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1878:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1879:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1878]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP1879]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1880:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1881:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1882:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1880]], i32 [[TMP1881]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1883:%.*]] = extractvalue { i32, i1 } [[TMP1882]], 0
// CHECK-NEXT:    store i32 [[TMP1883]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1884:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1885:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1886:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1884]], i32 [[TMP1885]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1887:%.*]] = extractvalue { i32, i1 } [[TMP1886]], 0
// CHECK-NEXT:    store i32 [[TMP1887]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1888:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1889:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1888]] monotonic, align 4
// CHECK-NEXT:    [[TMP1890:%.*]] = icmp sgt i32 [[TMP1889]], [[TMP1888]]
// CHECK-NEXT:    [[TMP1891:%.*]] = select i1 [[TMP1890]], i32 [[TMP1888]], i32 [[TMP1889]]
// CHECK-NEXT:    store i32 [[TMP1891]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1892:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1893:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1892]] monotonic, align 4
// CHECK-NEXT:    [[TMP1894:%.*]] = icmp slt i32 [[TMP1893]], [[TMP1892]]
// CHECK-NEXT:    [[TMP1895:%.*]] = select i1 [[TMP1894]], i32 [[TMP1892]], i32 [[TMP1893]]
// CHECK-NEXT:    store i32 [[TMP1895]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1896:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1897:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1896]] monotonic, align 4
// CHECK-NEXT:    [[TMP1898:%.*]] = icmp slt i32 [[TMP1897]], [[TMP1896]]
// CHECK-NEXT:    [[TMP1899:%.*]] = select i1 [[TMP1898]], i32 [[TMP1896]], i32 [[TMP1897]]
// CHECK-NEXT:    store i32 [[TMP1899]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1900:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1901:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1900]] monotonic, align 4
// CHECK-NEXT:    [[TMP1902:%.*]] = icmp sgt i32 [[TMP1901]], [[TMP1900]]
// CHECK-NEXT:    [[TMP1903:%.*]] = select i1 [[TMP1902]], i32 [[TMP1900]], i32 [[TMP1901]]
// CHECK-NEXT:    store i32 [[TMP1903]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1904:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1905:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1906:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1904]], i32 [[TMP1905]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1907:%.*]] = extractvalue { i32, i1 } [[TMP1906]], 0
// CHECK-NEXT:    [[TMP1908:%.*]] = extractvalue { i32, i1 } [[TMP1906]], 1
// CHECK-NEXT:    [[TMP1909:%.*]] = select i1 [[TMP1908]], i32 [[TMP1904]], i32 [[TMP1907]]
// CHECK-NEXT:    store i32 [[TMP1909]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1910:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1911:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1912:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1910]], i32 [[TMP1911]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1913:%.*]] = extractvalue { i32, i1 } [[TMP1912]], 0
// CHECK-NEXT:    [[TMP1914:%.*]] = extractvalue { i32, i1 } [[TMP1912]], 1
// CHECK-NEXT:    [[TMP1915:%.*]] = select i1 [[TMP1914]], i32 [[TMP1910]], i32 [[TMP1913]]
// CHECK-NEXT:    store i32 [[TMP1915]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP1916:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1917:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1918:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1916]], i32 [[TMP1917]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1919:%.*]] = extractvalue { i32, i1 } [[TMP1918]], 0
// CHECK-NEXT:    [[TMP1920:%.*]] = extractvalue { i32, i1 } [[TMP1918]], 1
// CHECK-NEXT:    br i1 [[TMP1920]], label [[IX_ATOMIC_EXIT:%.*]], label [[IX_ATOMIC_CONT:%.*]]
// CHECK:       ix.atomic.cont:
// CHECK-NEXT:    store i32 [[TMP1919]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT]]
// CHECK:       ix.atomic.exit:
// CHECK-NEXT:    [[TMP1921:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1922:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1923:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1921]], i32 [[TMP1922]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1924:%.*]] = extractvalue { i32, i1 } [[TMP1923]], 0
// CHECK-NEXT:    [[TMP1925:%.*]] = extractvalue { i32, i1 } [[TMP1923]], 1
// CHECK-NEXT:    br i1 [[TMP1925]], label [[IX_ATOMIC_EXIT185:%.*]], label [[IX_ATOMIC_CONT186:%.*]]
// CHECK:       ix.atomic.cont186:
// CHECK-NEXT:    store i32 [[TMP1924]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT185]]
// CHECK:       ix.atomic.exit185:
// CHECK-NEXT:    [[TMP1926:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1927:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1928:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1926]], i32 [[TMP1927]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1929:%.*]] = extractvalue { i32, i1 } [[TMP1928]], 1
// CHECK-NEXT:    [[TMP1930:%.*]] = sext i1 [[TMP1929]] to i32
// CHECK-NEXT:    store i32 [[TMP1930]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP1931:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1932:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1933:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1931]], i32 [[TMP1932]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1934:%.*]] = extractvalue { i32, i1 } [[TMP1933]], 1
// CHECK-NEXT:    [[TMP1935:%.*]] = sext i1 [[TMP1934]] to i32
// CHECK-NEXT:    store i32 [[TMP1935]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP1936:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1937:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1938:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1936]], i32 [[TMP1937]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1939:%.*]] = extractvalue { i32, i1 } [[TMP1938]], 0
// CHECK-NEXT:    [[TMP1940:%.*]] = extractvalue { i32, i1 } [[TMP1938]], 1
// CHECK-NEXT:    br i1 [[TMP1940]], label [[IX_ATOMIC_EXIT187:%.*]], label [[IX_ATOMIC_CONT188:%.*]]
// CHECK:       ix.atomic.cont188:
// CHECK-NEXT:    store i32 [[TMP1939]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT187]]
// CHECK:       ix.atomic.exit187:
// CHECK-NEXT:    [[TMP1941:%.*]] = extractvalue { i32, i1 } [[TMP1938]], 1
// CHECK-NEXT:    [[TMP1942:%.*]] = sext i1 [[TMP1941]] to i32
// CHECK-NEXT:    store i32 [[TMP1942]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP1943:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1944:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1945:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1943]], i32 [[TMP1944]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP1946:%.*]] = extractvalue { i32, i1 } [[TMP1945]], 0
// CHECK-NEXT:    [[TMP1947:%.*]] = extractvalue { i32, i1 } [[TMP1945]], 1
// CHECK-NEXT:    br i1 [[TMP1947]], label [[IX_ATOMIC_EXIT189:%.*]], label [[IX_ATOMIC_CONT190:%.*]]
// CHECK:       ix.atomic.cont190:
// CHECK-NEXT:    store i32 [[TMP1946]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT189]]
// CHECK:       ix.atomic.exit189:
// CHECK-NEXT:    [[TMP1948:%.*]] = extractvalue { i32, i1 } [[TMP1945]], 1
// CHECK-NEXT:    [[TMP1949:%.*]] = sext i1 [[TMP1948]] to i32
// CHECK-NEXT:    store i32 [[TMP1949]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP1950:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1951:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1950]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP1951]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1952:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1953:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1952]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP1953]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1954:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1955:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1954]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP1955]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1956:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1957:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1956]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP1957]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1958:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1959:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1960:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1958]], i32 [[TMP1959]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP1961:%.*]] = extractvalue { i32, i1 } [[TMP1960]], 0
// CHECK-NEXT:    store i32 [[TMP1961]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1962:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1963:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1964:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1962]], i32 [[TMP1963]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP1965:%.*]] = extractvalue { i32, i1 } [[TMP1964]], 0
// CHECK-NEXT:    store i32 [[TMP1965]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1966:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1967:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1966]] acq_rel, align 4
// CHECK-NEXT:    [[TMP1968:%.*]] = icmp sgt i32 [[TMP1967]], [[TMP1966]]
// CHECK-NEXT:    [[TMP1969:%.*]] = select i1 [[TMP1968]], i32 [[TMP1966]], i32 [[TMP1967]]
// CHECK-NEXT:    store i32 [[TMP1969]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1970:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1971:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1970]] acq_rel, align 4
// CHECK-NEXT:    [[TMP1972:%.*]] = icmp slt i32 [[TMP1971]], [[TMP1970]]
// CHECK-NEXT:    [[TMP1973:%.*]] = select i1 [[TMP1972]], i32 [[TMP1970]], i32 [[TMP1971]]
// CHECK-NEXT:    store i32 [[TMP1973]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1974:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1975:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP1974]] acq_rel, align 4
// CHECK-NEXT:    [[TMP1976:%.*]] = icmp slt i32 [[TMP1975]], [[TMP1974]]
// CHECK-NEXT:    [[TMP1977:%.*]] = select i1 [[TMP1976]], i32 [[TMP1974]], i32 [[TMP1975]]
// CHECK-NEXT:    store i32 [[TMP1977]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1978:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1979:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP1978]] acq_rel, align 4
// CHECK-NEXT:    [[TMP1980:%.*]] = icmp sgt i32 [[TMP1979]], [[TMP1978]]
// CHECK-NEXT:    [[TMP1981:%.*]] = select i1 [[TMP1980]], i32 [[TMP1978]], i32 [[TMP1979]]
// CHECK-NEXT:    store i32 [[TMP1981]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1982:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1983:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1984:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1982]], i32 [[TMP1983]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP1985:%.*]] = extractvalue { i32, i1 } [[TMP1984]], 0
// CHECK-NEXT:    [[TMP1986:%.*]] = extractvalue { i32, i1 } [[TMP1984]], 1
// CHECK-NEXT:    [[TMP1987:%.*]] = select i1 [[TMP1986]], i32 [[TMP1982]], i32 [[TMP1985]]
// CHECK-NEXT:    store i32 [[TMP1987]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1988:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1989:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1990:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1988]], i32 [[TMP1989]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP1991:%.*]] = extractvalue { i32, i1 } [[TMP1990]], 0
// CHECK-NEXT:    [[TMP1992:%.*]] = extractvalue { i32, i1 } [[TMP1990]], 1
// CHECK-NEXT:    [[TMP1993:%.*]] = select i1 [[TMP1992]], i32 [[TMP1988]], i32 [[TMP1991]]
// CHECK-NEXT:    store i32 [[TMP1993]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1994:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1995:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP1996:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1994]], i32 [[TMP1995]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP1997:%.*]] = extractvalue { i32, i1 } [[TMP1996]], 0
// CHECK-NEXT:    [[TMP1998:%.*]] = extractvalue { i32, i1 } [[TMP1996]], 1
// CHECK-NEXT:    br i1 [[TMP1998]], label [[IX_ATOMIC_EXIT191:%.*]], label [[IX_ATOMIC_CONT192:%.*]]
// CHECK:       ix.atomic.cont192:
// CHECK-NEXT:    store i32 [[TMP1997]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT191]]
// CHECK:       ix.atomic.exit191:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP1999:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2000:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2001:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP1999]], i32 [[TMP2000]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2002:%.*]] = extractvalue { i32, i1 } [[TMP2001]], 0
// CHECK-NEXT:    [[TMP2003:%.*]] = extractvalue { i32, i1 } [[TMP2001]], 1
// CHECK-NEXT:    br i1 [[TMP2003]], label [[IX_ATOMIC_EXIT193:%.*]], label [[IX_ATOMIC_CONT194:%.*]]
// CHECK:       ix.atomic.cont194:
// CHECK-NEXT:    store i32 [[TMP2002]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT193]]
// CHECK:       ix.atomic.exit193:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2004:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2005:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2006:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2004]], i32 [[TMP2005]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2007:%.*]] = extractvalue { i32, i1 } [[TMP2006]], 1
// CHECK-NEXT:    [[TMP2008:%.*]] = sext i1 [[TMP2007]] to i32
// CHECK-NEXT:    store i32 [[TMP2008]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2009:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2010:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2011:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2009]], i32 [[TMP2010]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2012:%.*]] = extractvalue { i32, i1 } [[TMP2011]], 1
// CHECK-NEXT:    [[TMP2013:%.*]] = sext i1 [[TMP2012]] to i32
// CHECK-NEXT:    store i32 [[TMP2013]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2014:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2015:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2016:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2014]], i32 [[TMP2015]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2017:%.*]] = extractvalue { i32, i1 } [[TMP2016]], 0
// CHECK-NEXT:    [[TMP2018:%.*]] = extractvalue { i32, i1 } [[TMP2016]], 1
// CHECK-NEXT:    br i1 [[TMP2018]], label [[IX_ATOMIC_EXIT195:%.*]], label [[IX_ATOMIC_CONT196:%.*]]
// CHECK:       ix.atomic.cont196:
// CHECK-NEXT:    store i32 [[TMP2017]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT195]]
// CHECK:       ix.atomic.exit195:
// CHECK-NEXT:    [[TMP2019:%.*]] = extractvalue { i32, i1 } [[TMP2016]], 1
// CHECK-NEXT:    [[TMP2020:%.*]] = sext i1 [[TMP2019]] to i32
// CHECK-NEXT:    store i32 [[TMP2020]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2021:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2022:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2023:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2021]], i32 [[TMP2022]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2024:%.*]] = extractvalue { i32, i1 } [[TMP2023]], 0
// CHECK-NEXT:    [[TMP2025:%.*]] = extractvalue { i32, i1 } [[TMP2023]], 1
// CHECK-NEXT:    br i1 [[TMP2025]], label [[IX_ATOMIC_EXIT197:%.*]], label [[IX_ATOMIC_CONT198:%.*]]
// CHECK:       ix.atomic.cont198:
// CHECK-NEXT:    store i32 [[TMP2024]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT197]]
// CHECK:       ix.atomic.exit197:
// CHECK-NEXT:    [[TMP2026:%.*]] = extractvalue { i32, i1 } [[TMP2023]], 1
// CHECK-NEXT:    [[TMP2027:%.*]] = sext i1 [[TMP2026]] to i32
// CHECK-NEXT:    store i32 [[TMP2027]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2028:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2029:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2028]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2029]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2030:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2031:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2030]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2031]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2032:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2033:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2032]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2033]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2034:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2035:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2034]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2035]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2036:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2037:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2038:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2036]], i32 [[TMP2037]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2039:%.*]] = extractvalue { i32, i1 } [[TMP2038]], 0
// CHECK-NEXT:    store i32 [[TMP2039]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2040:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2041:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2042:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2040]], i32 [[TMP2041]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2043:%.*]] = extractvalue { i32, i1 } [[TMP2042]], 0
// CHECK-NEXT:    store i32 [[TMP2043]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2044:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2045:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2044]] acquire, align 4
// CHECK-NEXT:    [[TMP2046:%.*]] = icmp sgt i32 [[TMP2045]], [[TMP2044]]
// CHECK-NEXT:    [[TMP2047:%.*]] = select i1 [[TMP2046]], i32 [[TMP2044]], i32 [[TMP2045]]
// CHECK-NEXT:    store i32 [[TMP2047]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2048:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2049:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2048]] acquire, align 4
// CHECK-NEXT:    [[TMP2050:%.*]] = icmp slt i32 [[TMP2049]], [[TMP2048]]
// CHECK-NEXT:    [[TMP2051:%.*]] = select i1 [[TMP2050]], i32 [[TMP2048]], i32 [[TMP2049]]
// CHECK-NEXT:    store i32 [[TMP2051]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2052:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2053:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2052]] acquire, align 4
// CHECK-NEXT:    [[TMP2054:%.*]] = icmp slt i32 [[TMP2053]], [[TMP2052]]
// CHECK-NEXT:    [[TMP2055:%.*]] = select i1 [[TMP2054]], i32 [[TMP2052]], i32 [[TMP2053]]
// CHECK-NEXT:    store i32 [[TMP2055]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2056:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2057:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2056]] acquire, align 4
// CHECK-NEXT:    [[TMP2058:%.*]] = icmp sgt i32 [[TMP2057]], [[TMP2056]]
// CHECK-NEXT:    [[TMP2059:%.*]] = select i1 [[TMP2058]], i32 [[TMP2056]], i32 [[TMP2057]]
// CHECK-NEXT:    store i32 [[TMP2059]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2060:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2061:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2062:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2060]], i32 [[TMP2061]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2063:%.*]] = extractvalue { i32, i1 } [[TMP2062]], 0
// CHECK-NEXT:    [[TMP2064:%.*]] = extractvalue { i32, i1 } [[TMP2062]], 1
// CHECK-NEXT:    [[TMP2065:%.*]] = select i1 [[TMP2064]], i32 [[TMP2060]], i32 [[TMP2063]]
// CHECK-NEXT:    store i32 [[TMP2065]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2066:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2067:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2068:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2066]], i32 [[TMP2067]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2069:%.*]] = extractvalue { i32, i1 } [[TMP2068]], 0
// CHECK-NEXT:    [[TMP2070:%.*]] = extractvalue { i32, i1 } [[TMP2068]], 1
// CHECK-NEXT:    [[TMP2071:%.*]] = select i1 [[TMP2070]], i32 [[TMP2066]], i32 [[TMP2069]]
// CHECK-NEXT:    store i32 [[TMP2071]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2072:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2073:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2074:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2072]], i32 [[TMP2073]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2075:%.*]] = extractvalue { i32, i1 } [[TMP2074]], 0
// CHECK-NEXT:    [[TMP2076:%.*]] = extractvalue { i32, i1 } [[TMP2074]], 1
// CHECK-NEXT:    br i1 [[TMP2076]], label [[IX_ATOMIC_EXIT199:%.*]], label [[IX_ATOMIC_CONT200:%.*]]
// CHECK:       ix.atomic.cont200:
// CHECK-NEXT:    store i32 [[TMP2075]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT199]]
// CHECK:       ix.atomic.exit199:
// CHECK-NEXT:    [[TMP2077:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2078:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2079:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2077]], i32 [[TMP2078]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2080:%.*]] = extractvalue { i32, i1 } [[TMP2079]], 0
// CHECK-NEXT:    [[TMP2081:%.*]] = extractvalue { i32, i1 } [[TMP2079]], 1
// CHECK-NEXT:    br i1 [[TMP2081]], label [[IX_ATOMIC_EXIT201:%.*]], label [[IX_ATOMIC_CONT202:%.*]]
// CHECK:       ix.atomic.cont202:
// CHECK-NEXT:    store i32 [[TMP2080]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT201]]
// CHECK:       ix.atomic.exit201:
// CHECK-NEXT:    [[TMP2082:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2083:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2084:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2082]], i32 [[TMP2083]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2085:%.*]] = extractvalue { i32, i1 } [[TMP2084]], 1
// CHECK-NEXT:    [[TMP2086:%.*]] = sext i1 [[TMP2085]] to i32
// CHECK-NEXT:    store i32 [[TMP2086]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2087:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2088:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2089:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2087]], i32 [[TMP2088]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2090:%.*]] = extractvalue { i32, i1 } [[TMP2089]], 1
// CHECK-NEXT:    [[TMP2091:%.*]] = sext i1 [[TMP2090]] to i32
// CHECK-NEXT:    store i32 [[TMP2091]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2092:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2093:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2094:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2092]], i32 [[TMP2093]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2095:%.*]] = extractvalue { i32, i1 } [[TMP2094]], 0
// CHECK-NEXT:    [[TMP2096:%.*]] = extractvalue { i32, i1 } [[TMP2094]], 1
// CHECK-NEXT:    br i1 [[TMP2096]], label [[IX_ATOMIC_EXIT203:%.*]], label [[IX_ATOMIC_CONT204:%.*]]
// CHECK:       ix.atomic.cont204:
// CHECK-NEXT:    store i32 [[TMP2095]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT203]]
// CHECK:       ix.atomic.exit203:
// CHECK-NEXT:    [[TMP2097:%.*]] = extractvalue { i32, i1 } [[TMP2094]], 1
// CHECK-NEXT:    [[TMP2098:%.*]] = sext i1 [[TMP2097]] to i32
// CHECK-NEXT:    store i32 [[TMP2098]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2099:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2100:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2101:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2099]], i32 [[TMP2100]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2102:%.*]] = extractvalue { i32, i1 } [[TMP2101]], 0
// CHECK-NEXT:    [[TMP2103:%.*]] = extractvalue { i32, i1 } [[TMP2101]], 1
// CHECK-NEXT:    br i1 [[TMP2103]], label [[IX_ATOMIC_EXIT205:%.*]], label [[IX_ATOMIC_CONT206:%.*]]
// CHECK:       ix.atomic.cont206:
// CHECK-NEXT:    store i32 [[TMP2102]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT205]]
// CHECK:       ix.atomic.exit205:
// CHECK-NEXT:    [[TMP2104:%.*]] = extractvalue { i32, i1 } [[TMP2101]], 1
// CHECK-NEXT:    [[TMP2105:%.*]] = sext i1 [[TMP2104]] to i32
// CHECK-NEXT:    store i32 [[TMP2105]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2106:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2107:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2106]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2107]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2108:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2109:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2108]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2109]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2110:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2111:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2110]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2111]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2112:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2113:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2112]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2113]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2114:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2115:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2116:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2114]], i32 [[TMP2115]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2117:%.*]] = extractvalue { i32, i1 } [[TMP2116]], 0
// CHECK-NEXT:    store i32 [[TMP2117]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2118:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2119:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2120:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2118]], i32 [[TMP2119]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2121:%.*]] = extractvalue { i32, i1 } [[TMP2120]], 0
// CHECK-NEXT:    store i32 [[TMP2121]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2122:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2123:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2122]] monotonic, align 4
// CHECK-NEXT:    [[TMP2124:%.*]] = icmp sgt i32 [[TMP2123]], [[TMP2122]]
// CHECK-NEXT:    [[TMP2125:%.*]] = select i1 [[TMP2124]], i32 [[TMP2122]], i32 [[TMP2123]]
// CHECK-NEXT:    store i32 [[TMP2125]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2126:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2127:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2126]] monotonic, align 4
// CHECK-NEXT:    [[TMP2128:%.*]] = icmp slt i32 [[TMP2127]], [[TMP2126]]
// CHECK-NEXT:    [[TMP2129:%.*]] = select i1 [[TMP2128]], i32 [[TMP2126]], i32 [[TMP2127]]
// CHECK-NEXT:    store i32 [[TMP2129]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2130:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2131:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2130]] monotonic, align 4
// CHECK-NEXT:    [[TMP2132:%.*]] = icmp slt i32 [[TMP2131]], [[TMP2130]]
// CHECK-NEXT:    [[TMP2133:%.*]] = select i1 [[TMP2132]], i32 [[TMP2130]], i32 [[TMP2131]]
// CHECK-NEXT:    store i32 [[TMP2133]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2134:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2135:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2134]] monotonic, align 4
// CHECK-NEXT:    [[TMP2136:%.*]] = icmp sgt i32 [[TMP2135]], [[TMP2134]]
// CHECK-NEXT:    [[TMP2137:%.*]] = select i1 [[TMP2136]], i32 [[TMP2134]], i32 [[TMP2135]]
// CHECK-NEXT:    store i32 [[TMP2137]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2138:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2139:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2140:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2138]], i32 [[TMP2139]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2141:%.*]] = extractvalue { i32, i1 } [[TMP2140]], 0
// CHECK-NEXT:    [[TMP2142:%.*]] = extractvalue { i32, i1 } [[TMP2140]], 1
// CHECK-NEXT:    [[TMP2143:%.*]] = select i1 [[TMP2142]], i32 [[TMP2138]], i32 [[TMP2141]]
// CHECK-NEXT:    store i32 [[TMP2143]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2144:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2145:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2146:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2144]], i32 [[TMP2145]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2147:%.*]] = extractvalue { i32, i1 } [[TMP2146]], 0
// CHECK-NEXT:    [[TMP2148:%.*]] = extractvalue { i32, i1 } [[TMP2146]], 1
// CHECK-NEXT:    [[TMP2149:%.*]] = select i1 [[TMP2148]], i32 [[TMP2144]], i32 [[TMP2147]]
// CHECK-NEXT:    store i32 [[TMP2149]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2150:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2151:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2152:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2150]], i32 [[TMP2151]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2153:%.*]] = extractvalue { i32, i1 } [[TMP2152]], 0
// CHECK-NEXT:    [[TMP2154:%.*]] = extractvalue { i32, i1 } [[TMP2152]], 1
// CHECK-NEXT:    br i1 [[TMP2154]], label [[IX_ATOMIC_EXIT207:%.*]], label [[IX_ATOMIC_CONT208:%.*]]
// CHECK:       ix.atomic.cont208:
// CHECK-NEXT:    store i32 [[TMP2153]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT207]]
// CHECK:       ix.atomic.exit207:
// CHECK-NEXT:    [[TMP2155:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2156:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2157:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2155]], i32 [[TMP2156]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2158:%.*]] = extractvalue { i32, i1 } [[TMP2157]], 0
// CHECK-NEXT:    [[TMP2159:%.*]] = extractvalue { i32, i1 } [[TMP2157]], 1
// CHECK-NEXT:    br i1 [[TMP2159]], label [[IX_ATOMIC_EXIT209:%.*]], label [[IX_ATOMIC_CONT210:%.*]]
// CHECK:       ix.atomic.cont210:
// CHECK-NEXT:    store i32 [[TMP2158]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT209]]
// CHECK:       ix.atomic.exit209:
// CHECK-NEXT:    [[TMP2160:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2161:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2162:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2160]], i32 [[TMP2161]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2163:%.*]] = extractvalue { i32, i1 } [[TMP2162]], 1
// CHECK-NEXT:    [[TMP2164:%.*]] = sext i1 [[TMP2163]] to i32
// CHECK-NEXT:    store i32 [[TMP2164]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2165:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2166:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2167:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2165]], i32 [[TMP2166]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2168:%.*]] = extractvalue { i32, i1 } [[TMP2167]], 1
// CHECK-NEXT:    [[TMP2169:%.*]] = sext i1 [[TMP2168]] to i32
// CHECK-NEXT:    store i32 [[TMP2169]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2170:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2171:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2172:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2170]], i32 [[TMP2171]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2173:%.*]] = extractvalue { i32, i1 } [[TMP2172]], 0
// CHECK-NEXT:    [[TMP2174:%.*]] = extractvalue { i32, i1 } [[TMP2172]], 1
// CHECK-NEXT:    br i1 [[TMP2174]], label [[IX_ATOMIC_EXIT211:%.*]], label [[IX_ATOMIC_CONT212:%.*]]
// CHECK:       ix.atomic.cont212:
// CHECK-NEXT:    store i32 [[TMP2173]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT211]]
// CHECK:       ix.atomic.exit211:
// CHECK-NEXT:    [[TMP2175:%.*]] = extractvalue { i32, i1 } [[TMP2172]], 1
// CHECK-NEXT:    [[TMP2176:%.*]] = sext i1 [[TMP2175]] to i32
// CHECK-NEXT:    store i32 [[TMP2176]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2177:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2178:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2179:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2177]], i32 [[TMP2178]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2180:%.*]] = extractvalue { i32, i1 } [[TMP2179]], 0
// CHECK-NEXT:    [[TMP2181:%.*]] = extractvalue { i32, i1 } [[TMP2179]], 1
// CHECK-NEXT:    br i1 [[TMP2181]], label [[IX_ATOMIC_EXIT213:%.*]], label [[IX_ATOMIC_CONT214:%.*]]
// CHECK:       ix.atomic.cont214:
// CHECK-NEXT:    store i32 [[TMP2180]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT213]]
// CHECK:       ix.atomic.exit213:
// CHECK-NEXT:    [[TMP2182:%.*]] = extractvalue { i32, i1 } [[TMP2179]], 1
// CHECK-NEXT:    [[TMP2183:%.*]] = sext i1 [[TMP2182]] to i32
// CHECK-NEXT:    store i32 [[TMP2183]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP2184:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2185:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2184]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2185]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2186:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2187:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2186]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2187]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2188:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2189:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2188]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2189]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2190:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2191:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2190]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2191]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2192:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2193:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2194:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2192]], i32 [[TMP2193]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2195:%.*]] = extractvalue { i32, i1 } [[TMP2194]], 0
// CHECK-NEXT:    store i32 [[TMP2195]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2196:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2197:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2198:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2196]], i32 [[TMP2197]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2199:%.*]] = extractvalue { i32, i1 } [[TMP2198]], 0
// CHECK-NEXT:    store i32 [[TMP2199]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2200:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2201:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2200]] release, align 4
// CHECK-NEXT:    [[TMP2202:%.*]] = icmp sgt i32 [[TMP2201]], [[TMP2200]]
// CHECK-NEXT:    [[TMP2203:%.*]] = select i1 [[TMP2202]], i32 [[TMP2200]], i32 [[TMP2201]]
// CHECK-NEXT:    store i32 [[TMP2203]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2204:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2205:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2204]] release, align 4
// CHECK-NEXT:    [[TMP2206:%.*]] = icmp slt i32 [[TMP2205]], [[TMP2204]]
// CHECK-NEXT:    [[TMP2207:%.*]] = select i1 [[TMP2206]], i32 [[TMP2204]], i32 [[TMP2205]]
// CHECK-NEXT:    store i32 [[TMP2207]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2208:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2209:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2208]] release, align 4
// CHECK-NEXT:    [[TMP2210:%.*]] = icmp slt i32 [[TMP2209]], [[TMP2208]]
// CHECK-NEXT:    [[TMP2211:%.*]] = select i1 [[TMP2210]], i32 [[TMP2208]], i32 [[TMP2209]]
// CHECK-NEXT:    store i32 [[TMP2211]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2212:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2213:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2212]] release, align 4
// CHECK-NEXT:    [[TMP2214:%.*]] = icmp sgt i32 [[TMP2213]], [[TMP2212]]
// CHECK-NEXT:    [[TMP2215:%.*]] = select i1 [[TMP2214]], i32 [[TMP2212]], i32 [[TMP2213]]
// CHECK-NEXT:    store i32 [[TMP2215]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2216:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2217:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2218:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2216]], i32 [[TMP2217]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2219:%.*]] = extractvalue { i32, i1 } [[TMP2218]], 0
// CHECK-NEXT:    [[TMP2220:%.*]] = extractvalue { i32, i1 } [[TMP2218]], 1
// CHECK-NEXT:    [[TMP2221:%.*]] = select i1 [[TMP2220]], i32 [[TMP2216]], i32 [[TMP2219]]
// CHECK-NEXT:    store i32 [[TMP2221]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2222:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2223:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2224:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2222]], i32 [[TMP2223]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2225:%.*]] = extractvalue { i32, i1 } [[TMP2224]], 0
// CHECK-NEXT:    [[TMP2226:%.*]] = extractvalue { i32, i1 } [[TMP2224]], 1
// CHECK-NEXT:    [[TMP2227:%.*]] = select i1 [[TMP2226]], i32 [[TMP2222]], i32 [[TMP2225]]
// CHECK-NEXT:    store i32 [[TMP2227]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2228:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2229:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2230:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2228]], i32 [[TMP2229]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2231:%.*]] = extractvalue { i32, i1 } [[TMP2230]], 0
// CHECK-NEXT:    [[TMP2232:%.*]] = extractvalue { i32, i1 } [[TMP2230]], 1
// CHECK-NEXT:    br i1 [[TMP2232]], label [[IX_ATOMIC_EXIT215:%.*]], label [[IX_ATOMIC_CONT216:%.*]]
// CHECK:       ix.atomic.cont216:
// CHECK-NEXT:    store i32 [[TMP2231]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT215]]
// CHECK:       ix.atomic.exit215:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2233:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2234:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2235:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2233]], i32 [[TMP2234]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2236:%.*]] = extractvalue { i32, i1 } [[TMP2235]], 0
// CHECK-NEXT:    [[TMP2237:%.*]] = extractvalue { i32, i1 } [[TMP2235]], 1
// CHECK-NEXT:    br i1 [[TMP2237]], label [[IX_ATOMIC_EXIT217:%.*]], label [[IX_ATOMIC_CONT218:%.*]]
// CHECK:       ix.atomic.cont218:
// CHECK-NEXT:    store i32 [[TMP2236]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT217]]
// CHECK:       ix.atomic.exit217:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2238:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2239:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2240:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2238]], i32 [[TMP2239]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2241:%.*]] = extractvalue { i32, i1 } [[TMP2240]], 1
// CHECK-NEXT:    [[TMP2242:%.*]] = sext i1 [[TMP2241]] to i32
// CHECK-NEXT:    store i32 [[TMP2242]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2243:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2244:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2245:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2243]], i32 [[TMP2244]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2246:%.*]] = extractvalue { i32, i1 } [[TMP2245]], 1
// CHECK-NEXT:    [[TMP2247:%.*]] = sext i1 [[TMP2246]] to i32
// CHECK-NEXT:    store i32 [[TMP2247]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2248:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2249:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2250:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2248]], i32 [[TMP2249]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2251:%.*]] = extractvalue { i32, i1 } [[TMP2250]], 0
// CHECK-NEXT:    [[TMP2252:%.*]] = extractvalue { i32, i1 } [[TMP2250]], 1
// CHECK-NEXT:    br i1 [[TMP2252]], label [[IX_ATOMIC_EXIT219:%.*]], label [[IX_ATOMIC_CONT220:%.*]]
// CHECK:       ix.atomic.cont220:
// CHECK-NEXT:    store i32 [[TMP2251]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT219]]
// CHECK:       ix.atomic.exit219:
// CHECK-NEXT:    [[TMP2253:%.*]] = extractvalue { i32, i1 } [[TMP2250]], 1
// CHECK-NEXT:    [[TMP2254:%.*]] = sext i1 [[TMP2253]] to i32
// CHECK-NEXT:    store i32 [[TMP2254]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2255:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2256:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2257:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2255]], i32 [[TMP2256]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2258:%.*]] = extractvalue { i32, i1 } [[TMP2257]], 0
// CHECK-NEXT:    [[TMP2259:%.*]] = extractvalue { i32, i1 } [[TMP2257]], 1
// CHECK-NEXT:    br i1 [[TMP2259]], label [[IX_ATOMIC_EXIT221:%.*]], label [[IX_ATOMIC_CONT222:%.*]]
// CHECK:       ix.atomic.cont222:
// CHECK-NEXT:    store i32 [[TMP2258]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT221]]
// CHECK:       ix.atomic.exit221:
// CHECK-NEXT:    [[TMP2260:%.*]] = extractvalue { i32, i1 } [[TMP2257]], 1
// CHECK-NEXT:    [[TMP2261:%.*]] = sext i1 [[TMP2260]] to i32
// CHECK-NEXT:    store i32 [[TMP2261]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2262:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2263:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2262]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2263]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2264:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2265:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2264]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2265]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2266:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2267:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2266]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2267]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2268:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2269:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2268]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2269]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2270:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2271:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2272:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2270]], i32 [[TMP2271]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2273:%.*]] = extractvalue { i32, i1 } [[TMP2272]], 0
// CHECK-NEXT:    store i32 [[TMP2273]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2274:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2275:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2276:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2274]], i32 [[TMP2275]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2277:%.*]] = extractvalue { i32, i1 } [[TMP2276]], 0
// CHECK-NEXT:    store i32 [[TMP2277]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2278:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2279:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2278]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2280:%.*]] = icmp sgt i32 [[TMP2279]], [[TMP2278]]
// CHECK-NEXT:    [[TMP2281:%.*]] = select i1 [[TMP2280]], i32 [[TMP2278]], i32 [[TMP2279]]
// CHECK-NEXT:    store i32 [[TMP2281]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2282:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2283:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2282]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2284:%.*]] = icmp slt i32 [[TMP2283]], [[TMP2282]]
// CHECK-NEXT:    [[TMP2285:%.*]] = select i1 [[TMP2284]], i32 [[TMP2282]], i32 [[TMP2283]]
// CHECK-NEXT:    store i32 [[TMP2285]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2286:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2287:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP2286]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2288:%.*]] = icmp slt i32 [[TMP2287]], [[TMP2286]]
// CHECK-NEXT:    [[TMP2289:%.*]] = select i1 [[TMP2288]], i32 [[TMP2286]], i32 [[TMP2287]]
// CHECK-NEXT:    store i32 [[TMP2289]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2290:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2291:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2290]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2292:%.*]] = icmp sgt i32 [[TMP2291]], [[TMP2290]]
// CHECK-NEXT:    [[TMP2293:%.*]] = select i1 [[TMP2292]], i32 [[TMP2290]], i32 [[TMP2291]]
// CHECK-NEXT:    store i32 [[TMP2293]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2294:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2295:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2296:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2294]], i32 [[TMP2295]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2297:%.*]] = extractvalue { i32, i1 } [[TMP2296]], 0
// CHECK-NEXT:    [[TMP2298:%.*]] = extractvalue { i32, i1 } [[TMP2296]], 1
// CHECK-NEXT:    [[TMP2299:%.*]] = select i1 [[TMP2298]], i32 [[TMP2294]], i32 [[TMP2297]]
// CHECK-NEXT:    store i32 [[TMP2299]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2300:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2301:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2302:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2300]], i32 [[TMP2301]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2303:%.*]] = extractvalue { i32, i1 } [[TMP2302]], 0
// CHECK-NEXT:    [[TMP2304:%.*]] = extractvalue { i32, i1 } [[TMP2302]], 1
// CHECK-NEXT:    [[TMP2305:%.*]] = select i1 [[TMP2304]], i32 [[TMP2300]], i32 [[TMP2303]]
// CHECK-NEXT:    store i32 [[TMP2305]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2306:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2307:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2308:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2306]], i32 [[TMP2307]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2309:%.*]] = extractvalue { i32, i1 } [[TMP2308]], 0
// CHECK-NEXT:    [[TMP2310:%.*]] = extractvalue { i32, i1 } [[TMP2308]], 1
// CHECK-NEXT:    br i1 [[TMP2310]], label [[IX_ATOMIC_EXIT223:%.*]], label [[IX_ATOMIC_CONT224:%.*]]
// CHECK:       ix.atomic.cont224:
// CHECK-NEXT:    store i32 [[TMP2309]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT223]]
// CHECK:       ix.atomic.exit223:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2311:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2312:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2313:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2311]], i32 [[TMP2312]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2314:%.*]] = extractvalue { i32, i1 } [[TMP2313]], 0
// CHECK-NEXT:    [[TMP2315:%.*]] = extractvalue { i32, i1 } [[TMP2313]], 1
// CHECK-NEXT:    br i1 [[TMP2315]], label [[IX_ATOMIC_EXIT225:%.*]], label [[IX_ATOMIC_CONT226:%.*]]
// CHECK:       ix.atomic.cont226:
// CHECK-NEXT:    store i32 [[TMP2314]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT225]]
// CHECK:       ix.atomic.exit225:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2316:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2317:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2318:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2316]], i32 [[TMP2317]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2319:%.*]] = extractvalue { i32, i1 } [[TMP2318]], 1
// CHECK-NEXT:    [[TMP2320:%.*]] = sext i1 [[TMP2319]] to i32
// CHECK-NEXT:    store i32 [[TMP2320]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2321:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2322:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2323:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2321]], i32 [[TMP2322]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2324:%.*]] = extractvalue { i32, i1 } [[TMP2323]], 1
// CHECK-NEXT:    [[TMP2325:%.*]] = sext i1 [[TMP2324]] to i32
// CHECK-NEXT:    store i32 [[TMP2325]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2326:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2327:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2328:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2326]], i32 [[TMP2327]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2329:%.*]] = extractvalue { i32, i1 } [[TMP2328]], 0
// CHECK-NEXT:    [[TMP2330:%.*]] = extractvalue { i32, i1 } [[TMP2328]], 1
// CHECK-NEXT:    br i1 [[TMP2330]], label [[IX_ATOMIC_EXIT227:%.*]], label [[IX_ATOMIC_CONT228:%.*]]
// CHECK:       ix.atomic.cont228:
// CHECK-NEXT:    store i32 [[TMP2329]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT227]]
// CHECK:       ix.atomic.exit227:
// CHECK-NEXT:    [[TMP2331:%.*]] = extractvalue { i32, i1 } [[TMP2328]], 1
// CHECK-NEXT:    [[TMP2332:%.*]] = sext i1 [[TMP2331]] to i32
// CHECK-NEXT:    store i32 [[TMP2332]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2333:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP2334:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP2335:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP2333]], i32 [[TMP2334]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2336:%.*]] = extractvalue { i32, i1 } [[TMP2335]], 0
// CHECK-NEXT:    [[TMP2337:%.*]] = extractvalue { i32, i1 } [[TMP2335]], 1
// CHECK-NEXT:    br i1 [[TMP2337]], label [[IX_ATOMIC_EXIT229:%.*]], label [[IX_ATOMIC_CONT230:%.*]]
// CHECK:       ix.atomic.cont230:
// CHECK-NEXT:    store i32 [[TMP2336]], ptr [[IV]], align 4
// CHECK-NEXT:    br label [[IX_ATOMIC_EXIT229]]
// CHECK:       ix.atomic.exit229:
// CHECK-NEXT:    [[TMP2338:%.*]] = extractvalue { i32, i1 } [[TMP2335]], 1
// CHECK-NEXT:    [[TMP2339:%.*]] = sext i1 [[TMP2338]] to i32
// CHECK-NEXT:    store i32 [[TMP2339]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2340:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2341:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2340]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2341]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2342:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2343:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2342]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2343]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2344:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2345:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2344]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2345]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2346:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2347:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2346]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2347]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2348:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2349:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2350:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2348]], i32 [[TMP2349]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2351:%.*]] = extractvalue { i32, i1 } [[TMP2350]], 0
// CHECK-NEXT:    store i32 [[TMP2351]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2352:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2353:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2354:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2352]], i32 [[TMP2353]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2355:%.*]] = extractvalue { i32, i1 } [[TMP2354]], 0
// CHECK-NEXT:    store i32 [[TMP2355]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2356:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2357:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2356]] monotonic, align 4
// CHECK-NEXT:    [[TMP2358:%.*]] = icmp ugt i32 [[TMP2357]], [[TMP2356]]
// CHECK-NEXT:    [[TMP2359:%.*]] = select i1 [[TMP2358]], i32 [[TMP2356]], i32 [[TMP2357]]
// CHECK-NEXT:    store i32 [[TMP2359]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2360:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2361:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2360]] monotonic, align 4
// CHECK-NEXT:    [[TMP2362:%.*]] = icmp ult i32 [[TMP2361]], [[TMP2360]]
// CHECK-NEXT:    [[TMP2363:%.*]] = select i1 [[TMP2362]], i32 [[TMP2360]], i32 [[TMP2361]]
// CHECK-NEXT:    store i32 [[TMP2363]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2364:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2365:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2364]] monotonic, align 4
// CHECK-NEXT:    [[TMP2366:%.*]] = icmp ult i32 [[TMP2365]], [[TMP2364]]
// CHECK-NEXT:    [[TMP2367:%.*]] = select i1 [[TMP2366]], i32 [[TMP2364]], i32 [[TMP2365]]
// CHECK-NEXT:    store i32 [[TMP2367]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2368:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2369:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2368]] monotonic, align 4
// CHECK-NEXT:    [[TMP2370:%.*]] = icmp ugt i32 [[TMP2369]], [[TMP2368]]
// CHECK-NEXT:    [[TMP2371:%.*]] = select i1 [[TMP2370]], i32 [[TMP2368]], i32 [[TMP2369]]
// CHECK-NEXT:    store i32 [[TMP2371]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2372:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2373:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2374:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2372]], i32 [[TMP2373]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2375:%.*]] = extractvalue { i32, i1 } [[TMP2374]], 0
// CHECK-NEXT:    [[TMP2376:%.*]] = extractvalue { i32, i1 } [[TMP2374]], 1
// CHECK-NEXT:    [[TMP2377:%.*]] = select i1 [[TMP2376]], i32 [[TMP2372]], i32 [[TMP2375]]
// CHECK-NEXT:    store i32 [[TMP2377]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2378:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2379:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2380:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2378]], i32 [[TMP2379]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2381:%.*]] = extractvalue { i32, i1 } [[TMP2380]], 0
// CHECK-NEXT:    [[TMP2382:%.*]] = extractvalue { i32, i1 } [[TMP2380]], 1
// CHECK-NEXT:    [[TMP2383:%.*]] = select i1 [[TMP2382]], i32 [[TMP2378]], i32 [[TMP2381]]
// CHECK-NEXT:    store i32 [[TMP2383]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2384:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2385:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2386:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2384]], i32 [[TMP2385]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2387:%.*]] = extractvalue { i32, i1 } [[TMP2386]], 0
// CHECK-NEXT:    [[TMP2388:%.*]] = extractvalue { i32, i1 } [[TMP2386]], 1
// CHECK-NEXT:    br i1 [[TMP2388]], label [[UIX_ATOMIC_EXIT:%.*]], label [[UIX_ATOMIC_CONT:%.*]]
// CHECK:       uix.atomic.cont:
// CHECK-NEXT:    store i32 [[TMP2387]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT]]
// CHECK:       uix.atomic.exit:
// CHECK-NEXT:    [[TMP2389:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2390:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2391:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2389]], i32 [[TMP2390]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2392:%.*]] = extractvalue { i32, i1 } [[TMP2391]], 0
// CHECK-NEXT:    [[TMP2393:%.*]] = extractvalue { i32, i1 } [[TMP2391]], 1
// CHECK-NEXT:    br i1 [[TMP2393]], label [[UIX_ATOMIC_EXIT231:%.*]], label [[UIX_ATOMIC_CONT232:%.*]]
// CHECK:       uix.atomic.cont232:
// CHECK-NEXT:    store i32 [[TMP2392]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT231]]
// CHECK:       uix.atomic.exit231:
// CHECK-NEXT:    [[TMP2394:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2395:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2396:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2394]], i32 [[TMP2395]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2397:%.*]] = extractvalue { i32, i1 } [[TMP2396]], 1
// CHECK-NEXT:    [[TMP2398:%.*]] = zext i1 [[TMP2397]] to i32
// CHECK-NEXT:    store i32 [[TMP2398]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2399:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2400:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2401:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2399]], i32 [[TMP2400]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2402:%.*]] = extractvalue { i32, i1 } [[TMP2401]], 1
// CHECK-NEXT:    [[TMP2403:%.*]] = zext i1 [[TMP2402]] to i32
// CHECK-NEXT:    store i32 [[TMP2403]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2404:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2405:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2406:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2404]], i32 [[TMP2405]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2407:%.*]] = extractvalue { i32, i1 } [[TMP2406]], 0
// CHECK-NEXT:    [[TMP2408:%.*]] = extractvalue { i32, i1 } [[TMP2406]], 1
// CHECK-NEXT:    br i1 [[TMP2408]], label [[UIX_ATOMIC_EXIT233:%.*]], label [[UIX_ATOMIC_CONT234:%.*]]
// CHECK:       uix.atomic.cont234:
// CHECK-NEXT:    store i32 [[TMP2407]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT233]]
// CHECK:       uix.atomic.exit233:
// CHECK-NEXT:    [[TMP2409:%.*]] = extractvalue { i32, i1 } [[TMP2406]], 1
// CHECK-NEXT:    [[TMP2410:%.*]] = zext i1 [[TMP2409]] to i32
// CHECK-NEXT:    store i32 [[TMP2410]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2411:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2412:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2413:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2411]], i32 [[TMP2412]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2414:%.*]] = extractvalue { i32, i1 } [[TMP2413]], 0
// CHECK-NEXT:    [[TMP2415:%.*]] = extractvalue { i32, i1 } [[TMP2413]], 1
// CHECK-NEXT:    br i1 [[TMP2415]], label [[UIX_ATOMIC_EXIT235:%.*]], label [[UIX_ATOMIC_CONT236:%.*]]
// CHECK:       uix.atomic.cont236:
// CHECK-NEXT:    store i32 [[TMP2414]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT235]]
// CHECK:       uix.atomic.exit235:
// CHECK-NEXT:    [[TMP2416:%.*]] = extractvalue { i32, i1 } [[TMP2413]], 1
// CHECK-NEXT:    [[TMP2417:%.*]] = zext i1 [[TMP2416]] to i32
// CHECK-NEXT:    store i32 [[TMP2417]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2418:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2419:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2418]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP2419]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2420:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2421:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2420]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP2421]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2422:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2423:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2422]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP2423]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2424:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2425:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2424]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP2425]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2426:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2427:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2428:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2426]], i32 [[TMP2427]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2429:%.*]] = extractvalue { i32, i1 } [[TMP2428]], 0
// CHECK-NEXT:    store i32 [[TMP2429]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2430:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2431:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2432:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2430]], i32 [[TMP2431]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2433:%.*]] = extractvalue { i32, i1 } [[TMP2432]], 0
// CHECK-NEXT:    store i32 [[TMP2433]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2434:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2435:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2434]] acq_rel, align 4
// CHECK-NEXT:    [[TMP2436:%.*]] = icmp ugt i32 [[TMP2435]], [[TMP2434]]
// CHECK-NEXT:    [[TMP2437:%.*]] = select i1 [[TMP2436]], i32 [[TMP2434]], i32 [[TMP2435]]
// CHECK-NEXT:    store i32 [[TMP2437]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2438:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2439:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2438]] acq_rel, align 4
// CHECK-NEXT:    [[TMP2440:%.*]] = icmp ult i32 [[TMP2439]], [[TMP2438]]
// CHECK-NEXT:    [[TMP2441:%.*]] = select i1 [[TMP2440]], i32 [[TMP2438]], i32 [[TMP2439]]
// CHECK-NEXT:    store i32 [[TMP2441]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2442:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2443:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2442]] acq_rel, align 4
// CHECK-NEXT:    [[TMP2444:%.*]] = icmp ult i32 [[TMP2443]], [[TMP2442]]
// CHECK-NEXT:    [[TMP2445:%.*]] = select i1 [[TMP2444]], i32 [[TMP2442]], i32 [[TMP2443]]
// CHECK-NEXT:    store i32 [[TMP2445]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2446:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2447:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2446]] acq_rel, align 4
// CHECK-NEXT:    [[TMP2448:%.*]] = icmp ugt i32 [[TMP2447]], [[TMP2446]]
// CHECK-NEXT:    [[TMP2449:%.*]] = select i1 [[TMP2448]], i32 [[TMP2446]], i32 [[TMP2447]]
// CHECK-NEXT:    store i32 [[TMP2449]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2450:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2451:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2452:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2450]], i32 [[TMP2451]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2453:%.*]] = extractvalue { i32, i1 } [[TMP2452]], 0
// CHECK-NEXT:    [[TMP2454:%.*]] = extractvalue { i32, i1 } [[TMP2452]], 1
// CHECK-NEXT:    [[TMP2455:%.*]] = select i1 [[TMP2454]], i32 [[TMP2450]], i32 [[TMP2453]]
// CHECK-NEXT:    store i32 [[TMP2455]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2456:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2457:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2458:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2456]], i32 [[TMP2457]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2459:%.*]] = extractvalue { i32, i1 } [[TMP2458]], 0
// CHECK-NEXT:    [[TMP2460:%.*]] = extractvalue { i32, i1 } [[TMP2458]], 1
// CHECK-NEXT:    [[TMP2461:%.*]] = select i1 [[TMP2460]], i32 [[TMP2456]], i32 [[TMP2459]]
// CHECK-NEXT:    store i32 [[TMP2461]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2462:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2463:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2464:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2462]], i32 [[TMP2463]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2465:%.*]] = extractvalue { i32, i1 } [[TMP2464]], 0
// CHECK-NEXT:    [[TMP2466:%.*]] = extractvalue { i32, i1 } [[TMP2464]], 1
// CHECK-NEXT:    br i1 [[TMP2466]], label [[UIX_ATOMIC_EXIT237:%.*]], label [[UIX_ATOMIC_CONT238:%.*]]
// CHECK:       uix.atomic.cont238:
// CHECK-NEXT:    store i32 [[TMP2465]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT237]]
// CHECK:       uix.atomic.exit237:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2467:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2468:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2469:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2467]], i32 [[TMP2468]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2470:%.*]] = extractvalue { i32, i1 } [[TMP2469]], 0
// CHECK-NEXT:    [[TMP2471:%.*]] = extractvalue { i32, i1 } [[TMP2469]], 1
// CHECK-NEXT:    br i1 [[TMP2471]], label [[UIX_ATOMIC_EXIT239:%.*]], label [[UIX_ATOMIC_CONT240:%.*]]
// CHECK:       uix.atomic.cont240:
// CHECK-NEXT:    store i32 [[TMP2470]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT239]]
// CHECK:       uix.atomic.exit239:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2472:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2473:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2474:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2472]], i32 [[TMP2473]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2475:%.*]] = extractvalue { i32, i1 } [[TMP2474]], 1
// CHECK-NEXT:    [[TMP2476:%.*]] = zext i1 [[TMP2475]] to i32
// CHECK-NEXT:    store i32 [[TMP2476]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2477:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2478:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2479:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2477]], i32 [[TMP2478]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2480:%.*]] = extractvalue { i32, i1 } [[TMP2479]], 1
// CHECK-NEXT:    [[TMP2481:%.*]] = zext i1 [[TMP2480]] to i32
// CHECK-NEXT:    store i32 [[TMP2481]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2482:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2483:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2484:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2482]], i32 [[TMP2483]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2485:%.*]] = extractvalue { i32, i1 } [[TMP2484]], 0
// CHECK-NEXT:    [[TMP2486:%.*]] = extractvalue { i32, i1 } [[TMP2484]], 1
// CHECK-NEXT:    br i1 [[TMP2486]], label [[UIX_ATOMIC_EXIT241:%.*]], label [[UIX_ATOMIC_CONT242:%.*]]
// CHECK:       uix.atomic.cont242:
// CHECK-NEXT:    store i32 [[TMP2485]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT241]]
// CHECK:       uix.atomic.exit241:
// CHECK-NEXT:    [[TMP2487:%.*]] = extractvalue { i32, i1 } [[TMP2484]], 1
// CHECK-NEXT:    [[TMP2488:%.*]] = zext i1 [[TMP2487]] to i32
// CHECK-NEXT:    store i32 [[TMP2488]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2489:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2490:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2491:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2489]], i32 [[TMP2490]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP2492:%.*]] = extractvalue { i32, i1 } [[TMP2491]], 0
// CHECK-NEXT:    [[TMP2493:%.*]] = extractvalue { i32, i1 } [[TMP2491]], 1
// CHECK-NEXT:    br i1 [[TMP2493]], label [[UIX_ATOMIC_EXIT243:%.*]], label [[UIX_ATOMIC_CONT244:%.*]]
// CHECK:       uix.atomic.cont244:
// CHECK-NEXT:    store i32 [[TMP2492]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT243]]
// CHECK:       uix.atomic.exit243:
// CHECK-NEXT:    [[TMP2494:%.*]] = extractvalue { i32, i1 } [[TMP2491]], 1
// CHECK-NEXT:    [[TMP2495:%.*]] = zext i1 [[TMP2494]] to i32
// CHECK-NEXT:    store i32 [[TMP2495]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2496:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2497:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2496]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2497]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2498:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2499:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2498]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2499]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2500:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2501:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2500]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2501]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2502:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2503:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2502]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP2503]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2504:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2505:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2506:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2504]], i32 [[TMP2505]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2507:%.*]] = extractvalue { i32, i1 } [[TMP2506]], 0
// CHECK-NEXT:    store i32 [[TMP2507]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2508:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2509:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2510:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2508]], i32 [[TMP2509]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2511:%.*]] = extractvalue { i32, i1 } [[TMP2510]], 0
// CHECK-NEXT:    store i32 [[TMP2511]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2512:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2513:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2512]] acquire, align 4
// CHECK-NEXT:    [[TMP2514:%.*]] = icmp ugt i32 [[TMP2513]], [[TMP2512]]
// CHECK-NEXT:    [[TMP2515:%.*]] = select i1 [[TMP2514]], i32 [[TMP2512]], i32 [[TMP2513]]
// CHECK-NEXT:    store i32 [[TMP2515]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2516:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2517:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2516]] acquire, align 4
// CHECK-NEXT:    [[TMP2518:%.*]] = icmp ult i32 [[TMP2517]], [[TMP2516]]
// CHECK-NEXT:    [[TMP2519:%.*]] = select i1 [[TMP2518]], i32 [[TMP2516]], i32 [[TMP2517]]
// CHECK-NEXT:    store i32 [[TMP2519]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2520:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2521:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2520]] acquire, align 4
// CHECK-NEXT:    [[TMP2522:%.*]] = icmp ult i32 [[TMP2521]], [[TMP2520]]
// CHECK-NEXT:    [[TMP2523:%.*]] = select i1 [[TMP2522]], i32 [[TMP2520]], i32 [[TMP2521]]
// CHECK-NEXT:    store i32 [[TMP2523]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2524:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2525:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2524]] acquire, align 4
// CHECK-NEXT:    [[TMP2526:%.*]] = icmp ugt i32 [[TMP2525]], [[TMP2524]]
// CHECK-NEXT:    [[TMP2527:%.*]] = select i1 [[TMP2526]], i32 [[TMP2524]], i32 [[TMP2525]]
// CHECK-NEXT:    store i32 [[TMP2527]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2528:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2529:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2530:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2528]], i32 [[TMP2529]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2531:%.*]] = extractvalue { i32, i1 } [[TMP2530]], 0
// CHECK-NEXT:    [[TMP2532:%.*]] = extractvalue { i32, i1 } [[TMP2530]], 1
// CHECK-NEXT:    [[TMP2533:%.*]] = select i1 [[TMP2532]], i32 [[TMP2528]], i32 [[TMP2531]]
// CHECK-NEXT:    store i32 [[TMP2533]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2534:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2535:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2536:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2534]], i32 [[TMP2535]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2537:%.*]] = extractvalue { i32, i1 } [[TMP2536]], 0
// CHECK-NEXT:    [[TMP2538:%.*]] = extractvalue { i32, i1 } [[TMP2536]], 1
// CHECK-NEXT:    [[TMP2539:%.*]] = select i1 [[TMP2538]], i32 [[TMP2534]], i32 [[TMP2537]]
// CHECK-NEXT:    store i32 [[TMP2539]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2540:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2541:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2542:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2540]], i32 [[TMP2541]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2543:%.*]] = extractvalue { i32, i1 } [[TMP2542]], 0
// CHECK-NEXT:    [[TMP2544:%.*]] = extractvalue { i32, i1 } [[TMP2542]], 1
// CHECK-NEXT:    br i1 [[TMP2544]], label [[UIX_ATOMIC_EXIT245:%.*]], label [[UIX_ATOMIC_CONT246:%.*]]
// CHECK:       uix.atomic.cont246:
// CHECK-NEXT:    store i32 [[TMP2543]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT245]]
// CHECK:       uix.atomic.exit245:
// CHECK-NEXT:    [[TMP2545:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2546:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2547:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2545]], i32 [[TMP2546]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2548:%.*]] = extractvalue { i32, i1 } [[TMP2547]], 0
// CHECK-NEXT:    [[TMP2549:%.*]] = extractvalue { i32, i1 } [[TMP2547]], 1
// CHECK-NEXT:    br i1 [[TMP2549]], label [[UIX_ATOMIC_EXIT247:%.*]], label [[UIX_ATOMIC_CONT248:%.*]]
// CHECK:       uix.atomic.cont248:
// CHECK-NEXT:    store i32 [[TMP2548]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT247]]
// CHECK:       uix.atomic.exit247:
// CHECK-NEXT:    [[TMP2550:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2551:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2552:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2550]], i32 [[TMP2551]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2553:%.*]] = extractvalue { i32, i1 } [[TMP2552]], 1
// CHECK-NEXT:    [[TMP2554:%.*]] = zext i1 [[TMP2553]] to i32
// CHECK-NEXT:    store i32 [[TMP2554]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2555:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2556:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2557:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2555]], i32 [[TMP2556]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2558:%.*]] = extractvalue { i32, i1 } [[TMP2557]], 1
// CHECK-NEXT:    [[TMP2559:%.*]] = zext i1 [[TMP2558]] to i32
// CHECK-NEXT:    store i32 [[TMP2559]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2560:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2561:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2562:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2560]], i32 [[TMP2561]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2563:%.*]] = extractvalue { i32, i1 } [[TMP2562]], 0
// CHECK-NEXT:    [[TMP2564:%.*]] = extractvalue { i32, i1 } [[TMP2562]], 1
// CHECK-NEXT:    br i1 [[TMP2564]], label [[UIX_ATOMIC_EXIT249:%.*]], label [[UIX_ATOMIC_CONT250:%.*]]
// CHECK:       uix.atomic.cont250:
// CHECK-NEXT:    store i32 [[TMP2563]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT249]]
// CHECK:       uix.atomic.exit249:
// CHECK-NEXT:    [[TMP2565:%.*]] = extractvalue { i32, i1 } [[TMP2562]], 1
// CHECK-NEXT:    [[TMP2566:%.*]] = zext i1 [[TMP2565]] to i32
// CHECK-NEXT:    store i32 [[TMP2566]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2567:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2568:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2569:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2567]], i32 [[TMP2568]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP2570:%.*]] = extractvalue { i32, i1 } [[TMP2569]], 0
// CHECK-NEXT:    [[TMP2571:%.*]] = extractvalue { i32, i1 } [[TMP2569]], 1
// CHECK-NEXT:    br i1 [[TMP2571]], label [[UIX_ATOMIC_EXIT251:%.*]], label [[UIX_ATOMIC_CONT252:%.*]]
// CHECK:       uix.atomic.cont252:
// CHECK-NEXT:    store i32 [[TMP2570]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT251]]
// CHECK:       uix.atomic.exit251:
// CHECK-NEXT:    [[TMP2572:%.*]] = extractvalue { i32, i1 } [[TMP2569]], 1
// CHECK-NEXT:    [[TMP2573:%.*]] = zext i1 [[TMP2572]] to i32
// CHECK-NEXT:    store i32 [[TMP2573]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2574:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2575:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2574]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2575]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2576:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2577:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2576]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2577]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2578:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2579:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2578]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2579]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2580:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2581:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2580]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP2581]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2582:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2583:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2584:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2582]], i32 [[TMP2583]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2585:%.*]] = extractvalue { i32, i1 } [[TMP2584]], 0
// CHECK-NEXT:    store i32 [[TMP2585]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2586:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2587:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2588:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2586]], i32 [[TMP2587]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2589:%.*]] = extractvalue { i32, i1 } [[TMP2588]], 0
// CHECK-NEXT:    store i32 [[TMP2589]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2590:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2591:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2590]] monotonic, align 4
// CHECK-NEXT:    [[TMP2592:%.*]] = icmp ugt i32 [[TMP2591]], [[TMP2590]]
// CHECK-NEXT:    [[TMP2593:%.*]] = select i1 [[TMP2592]], i32 [[TMP2590]], i32 [[TMP2591]]
// CHECK-NEXT:    store i32 [[TMP2593]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2594:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2595:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2594]] monotonic, align 4
// CHECK-NEXT:    [[TMP2596:%.*]] = icmp ult i32 [[TMP2595]], [[TMP2594]]
// CHECK-NEXT:    [[TMP2597:%.*]] = select i1 [[TMP2596]], i32 [[TMP2594]], i32 [[TMP2595]]
// CHECK-NEXT:    store i32 [[TMP2597]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2598:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2599:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2598]] monotonic, align 4
// CHECK-NEXT:    [[TMP2600:%.*]] = icmp ult i32 [[TMP2599]], [[TMP2598]]
// CHECK-NEXT:    [[TMP2601:%.*]] = select i1 [[TMP2600]], i32 [[TMP2598]], i32 [[TMP2599]]
// CHECK-NEXT:    store i32 [[TMP2601]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2602:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2603:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2602]] monotonic, align 4
// CHECK-NEXT:    [[TMP2604:%.*]] = icmp ugt i32 [[TMP2603]], [[TMP2602]]
// CHECK-NEXT:    [[TMP2605:%.*]] = select i1 [[TMP2604]], i32 [[TMP2602]], i32 [[TMP2603]]
// CHECK-NEXT:    store i32 [[TMP2605]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2606:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2607:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2608:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2606]], i32 [[TMP2607]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2609:%.*]] = extractvalue { i32, i1 } [[TMP2608]], 0
// CHECK-NEXT:    [[TMP2610:%.*]] = extractvalue { i32, i1 } [[TMP2608]], 1
// CHECK-NEXT:    [[TMP2611:%.*]] = select i1 [[TMP2610]], i32 [[TMP2606]], i32 [[TMP2609]]
// CHECK-NEXT:    store i32 [[TMP2611]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2612:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2613:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2614:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2612]], i32 [[TMP2613]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2615:%.*]] = extractvalue { i32, i1 } [[TMP2614]], 0
// CHECK-NEXT:    [[TMP2616:%.*]] = extractvalue { i32, i1 } [[TMP2614]], 1
// CHECK-NEXT:    [[TMP2617:%.*]] = select i1 [[TMP2616]], i32 [[TMP2612]], i32 [[TMP2615]]
// CHECK-NEXT:    store i32 [[TMP2617]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2618:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2619:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2620:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2618]], i32 [[TMP2619]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2621:%.*]] = extractvalue { i32, i1 } [[TMP2620]], 0
// CHECK-NEXT:    [[TMP2622:%.*]] = extractvalue { i32, i1 } [[TMP2620]], 1
// CHECK-NEXT:    br i1 [[TMP2622]], label [[UIX_ATOMIC_EXIT253:%.*]], label [[UIX_ATOMIC_CONT254:%.*]]
// CHECK:       uix.atomic.cont254:
// CHECK-NEXT:    store i32 [[TMP2621]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT253]]
// CHECK:       uix.atomic.exit253:
// CHECK-NEXT:    [[TMP2623:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2624:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2625:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2623]], i32 [[TMP2624]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2626:%.*]] = extractvalue { i32, i1 } [[TMP2625]], 0
// CHECK-NEXT:    [[TMP2627:%.*]] = extractvalue { i32, i1 } [[TMP2625]], 1
// CHECK-NEXT:    br i1 [[TMP2627]], label [[UIX_ATOMIC_EXIT255:%.*]], label [[UIX_ATOMIC_CONT256:%.*]]
// CHECK:       uix.atomic.cont256:
// CHECK-NEXT:    store i32 [[TMP2626]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT255]]
// CHECK:       uix.atomic.exit255:
// CHECK-NEXT:    [[TMP2628:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2629:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2630:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2628]], i32 [[TMP2629]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2631:%.*]] = extractvalue { i32, i1 } [[TMP2630]], 1
// CHECK-NEXT:    [[TMP2632:%.*]] = zext i1 [[TMP2631]] to i32
// CHECK-NEXT:    store i32 [[TMP2632]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2633:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2634:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2635:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2633]], i32 [[TMP2634]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2636:%.*]] = extractvalue { i32, i1 } [[TMP2635]], 1
// CHECK-NEXT:    [[TMP2637:%.*]] = zext i1 [[TMP2636]] to i32
// CHECK-NEXT:    store i32 [[TMP2637]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2638:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2639:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2640:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2638]], i32 [[TMP2639]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2641:%.*]] = extractvalue { i32, i1 } [[TMP2640]], 0
// CHECK-NEXT:    [[TMP2642:%.*]] = extractvalue { i32, i1 } [[TMP2640]], 1
// CHECK-NEXT:    br i1 [[TMP2642]], label [[UIX_ATOMIC_EXIT257:%.*]], label [[UIX_ATOMIC_CONT258:%.*]]
// CHECK:       uix.atomic.cont258:
// CHECK-NEXT:    store i32 [[TMP2641]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT257]]
// CHECK:       uix.atomic.exit257:
// CHECK-NEXT:    [[TMP2643:%.*]] = extractvalue { i32, i1 } [[TMP2640]], 1
// CHECK-NEXT:    [[TMP2644:%.*]] = zext i1 [[TMP2643]] to i32
// CHECK-NEXT:    store i32 [[TMP2644]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2645:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2646:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2647:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2645]], i32 [[TMP2646]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP2648:%.*]] = extractvalue { i32, i1 } [[TMP2647]], 0
// CHECK-NEXT:    [[TMP2649:%.*]] = extractvalue { i32, i1 } [[TMP2647]], 1
// CHECK-NEXT:    br i1 [[TMP2649]], label [[UIX_ATOMIC_EXIT259:%.*]], label [[UIX_ATOMIC_CONT260:%.*]]
// CHECK:       uix.atomic.cont260:
// CHECK-NEXT:    store i32 [[TMP2648]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT259]]
// CHECK:       uix.atomic.exit259:
// CHECK-NEXT:    [[TMP2650:%.*]] = extractvalue { i32, i1 } [[TMP2647]], 1
// CHECK-NEXT:    [[TMP2651:%.*]] = zext i1 [[TMP2650]] to i32
// CHECK-NEXT:    store i32 [[TMP2651]], ptr [[UIR]], align 4
// CHECK-NEXT:    [[TMP2652:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2653:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2652]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2653]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2654:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2655:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2654]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2655]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2656:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2657:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2656]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2657]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2658:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2659:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2658]] release, align 4
// CHECK-NEXT:    store i32 [[TMP2659]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2660:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2661:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2662:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2660]], i32 [[TMP2661]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2663:%.*]] = extractvalue { i32, i1 } [[TMP2662]], 0
// CHECK-NEXT:    store i32 [[TMP2663]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2664:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2665:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2666:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2664]], i32 [[TMP2665]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2667:%.*]] = extractvalue { i32, i1 } [[TMP2666]], 0
// CHECK-NEXT:    store i32 [[TMP2667]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2668:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2669:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2668]] release, align 4
// CHECK-NEXT:    [[TMP2670:%.*]] = icmp ugt i32 [[TMP2669]], [[TMP2668]]
// CHECK-NEXT:    [[TMP2671:%.*]] = select i1 [[TMP2670]], i32 [[TMP2668]], i32 [[TMP2669]]
// CHECK-NEXT:    store i32 [[TMP2671]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2672:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2673:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2672]] release, align 4
// CHECK-NEXT:    [[TMP2674:%.*]] = icmp ult i32 [[TMP2673]], [[TMP2672]]
// CHECK-NEXT:    [[TMP2675:%.*]] = select i1 [[TMP2674]], i32 [[TMP2672]], i32 [[TMP2673]]
// CHECK-NEXT:    store i32 [[TMP2675]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2676:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2677:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2676]] release, align 4
// CHECK-NEXT:    [[TMP2678:%.*]] = icmp ult i32 [[TMP2677]], [[TMP2676]]
// CHECK-NEXT:    [[TMP2679:%.*]] = select i1 [[TMP2678]], i32 [[TMP2676]], i32 [[TMP2677]]
// CHECK-NEXT:    store i32 [[TMP2679]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2680:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2681:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2680]] release, align 4
// CHECK-NEXT:    [[TMP2682:%.*]] = icmp ugt i32 [[TMP2681]], [[TMP2680]]
// CHECK-NEXT:    [[TMP2683:%.*]] = select i1 [[TMP2682]], i32 [[TMP2680]], i32 [[TMP2681]]
// CHECK-NEXT:    store i32 [[TMP2683]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2684:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2685:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2686:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2684]], i32 [[TMP2685]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2687:%.*]] = extractvalue { i32, i1 } [[TMP2686]], 0
// CHECK-NEXT:    [[TMP2688:%.*]] = extractvalue { i32, i1 } [[TMP2686]], 1
// CHECK-NEXT:    [[TMP2689:%.*]] = select i1 [[TMP2688]], i32 [[TMP2684]], i32 [[TMP2687]]
// CHECK-NEXT:    store i32 [[TMP2689]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2690:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2691:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2692:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2690]], i32 [[TMP2691]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2693:%.*]] = extractvalue { i32, i1 } [[TMP2692]], 0
// CHECK-NEXT:    [[TMP2694:%.*]] = extractvalue { i32, i1 } [[TMP2692]], 1
// CHECK-NEXT:    [[TMP2695:%.*]] = select i1 [[TMP2694]], i32 [[TMP2690]], i32 [[TMP2693]]
// CHECK-NEXT:    store i32 [[TMP2695]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2696:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2697:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2698:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2696]], i32 [[TMP2697]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2699:%.*]] = extractvalue { i32, i1 } [[TMP2698]], 0
// CHECK-NEXT:    [[TMP2700:%.*]] = extractvalue { i32, i1 } [[TMP2698]], 1
// CHECK-NEXT:    br i1 [[TMP2700]], label [[UIX_ATOMIC_EXIT261:%.*]], label [[UIX_ATOMIC_CONT262:%.*]]
// CHECK:       uix.atomic.cont262:
// CHECK-NEXT:    store i32 [[TMP2699]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT261]]
// CHECK:       uix.atomic.exit261:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2701:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2702:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2703:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2701]], i32 [[TMP2702]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2704:%.*]] = extractvalue { i32, i1 } [[TMP2703]], 0
// CHECK-NEXT:    [[TMP2705:%.*]] = extractvalue { i32, i1 } [[TMP2703]], 1
// CHECK-NEXT:    br i1 [[TMP2705]], label [[UIX_ATOMIC_EXIT263:%.*]], label [[UIX_ATOMIC_CONT264:%.*]]
// CHECK:       uix.atomic.cont264:
// CHECK-NEXT:    store i32 [[TMP2704]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT263]]
// CHECK:       uix.atomic.exit263:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2706:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2707:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2708:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2706]], i32 [[TMP2707]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2709:%.*]] = extractvalue { i32, i1 } [[TMP2708]], 1
// CHECK-NEXT:    [[TMP2710:%.*]] = zext i1 [[TMP2709]] to i32
// CHECK-NEXT:    store i32 [[TMP2710]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2711:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2712:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2713:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2711]], i32 [[TMP2712]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2714:%.*]] = extractvalue { i32, i1 } [[TMP2713]], 1
// CHECK-NEXT:    [[TMP2715:%.*]] = zext i1 [[TMP2714]] to i32
// CHECK-NEXT:    store i32 [[TMP2715]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2716:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2717:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2718:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2716]], i32 [[TMP2717]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2719:%.*]] = extractvalue { i32, i1 } [[TMP2718]], 0
// CHECK-NEXT:    [[TMP2720:%.*]] = extractvalue { i32, i1 } [[TMP2718]], 1
// CHECK-NEXT:    br i1 [[TMP2720]], label [[UIX_ATOMIC_EXIT265:%.*]], label [[UIX_ATOMIC_CONT266:%.*]]
// CHECK:       uix.atomic.cont266:
// CHECK-NEXT:    store i32 [[TMP2719]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT265]]
// CHECK:       uix.atomic.exit265:
// CHECK-NEXT:    [[TMP2721:%.*]] = extractvalue { i32, i1 } [[TMP2718]], 1
// CHECK-NEXT:    [[TMP2722:%.*]] = zext i1 [[TMP2721]] to i32
// CHECK-NEXT:    store i32 [[TMP2722]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2723:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2724:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2725:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2723]], i32 [[TMP2724]] release monotonic, align 4
// CHECK-NEXT:    [[TMP2726:%.*]] = extractvalue { i32, i1 } [[TMP2725]], 0
// CHECK-NEXT:    [[TMP2727:%.*]] = extractvalue { i32, i1 } [[TMP2725]], 1
// CHECK-NEXT:    br i1 [[TMP2727]], label [[UIX_ATOMIC_EXIT267:%.*]], label [[UIX_ATOMIC_CONT268:%.*]]
// CHECK:       uix.atomic.cont268:
// CHECK-NEXT:    store i32 [[TMP2726]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT267]]
// CHECK:       uix.atomic.exit267:
// CHECK-NEXT:    [[TMP2728:%.*]] = extractvalue { i32, i1 } [[TMP2725]], 1
// CHECK-NEXT:    [[TMP2729:%.*]] = zext i1 [[TMP2728]] to i32
// CHECK-NEXT:    store i32 [[TMP2729]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2730:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2731:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2730]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2731]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2732:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2733:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2732]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2733]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2734:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2735:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2734]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2735]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2736:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2737:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2736]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP2737]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2738:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2739:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2740:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2738]], i32 [[TMP2739]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2741:%.*]] = extractvalue { i32, i1 } [[TMP2740]], 0
// CHECK-NEXT:    store i32 [[TMP2741]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2742:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2743:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2744:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2742]], i32 [[TMP2743]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2745:%.*]] = extractvalue { i32, i1 } [[TMP2744]], 0
// CHECK-NEXT:    store i32 [[TMP2745]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2746:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2747:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2746]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2748:%.*]] = icmp ugt i32 [[TMP2747]], [[TMP2746]]
// CHECK-NEXT:    [[TMP2749:%.*]] = select i1 [[TMP2748]], i32 [[TMP2746]], i32 [[TMP2747]]
// CHECK-NEXT:    store i32 [[TMP2749]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2750:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2751:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2750]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2752:%.*]] = icmp ult i32 [[TMP2751]], [[TMP2750]]
// CHECK-NEXT:    [[TMP2753:%.*]] = select i1 [[TMP2752]], i32 [[TMP2750]], i32 [[TMP2751]]
// CHECK-NEXT:    store i32 [[TMP2753]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2754:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2755:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP2754]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2756:%.*]] = icmp ult i32 [[TMP2755]], [[TMP2754]]
// CHECK-NEXT:    [[TMP2757:%.*]] = select i1 [[TMP2756]], i32 [[TMP2754]], i32 [[TMP2755]]
// CHECK-NEXT:    store i32 [[TMP2757]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2758:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2759:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2758]] seq_cst, align 4
// CHECK-NEXT:    [[TMP2760:%.*]] = icmp ugt i32 [[TMP2759]], [[TMP2758]]
// CHECK-NEXT:    [[TMP2761:%.*]] = select i1 [[TMP2760]], i32 [[TMP2758]], i32 [[TMP2759]]
// CHECK-NEXT:    store i32 [[TMP2761]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2762:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2763:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2764:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2762]], i32 [[TMP2763]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2765:%.*]] = extractvalue { i32, i1 } [[TMP2764]], 0
// CHECK-NEXT:    [[TMP2766:%.*]] = extractvalue { i32, i1 } [[TMP2764]], 1
// CHECK-NEXT:    [[TMP2767:%.*]] = select i1 [[TMP2766]], i32 [[TMP2762]], i32 [[TMP2765]]
// CHECK-NEXT:    store i32 [[TMP2767]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2768:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2769:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2770:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2768]], i32 [[TMP2769]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2771:%.*]] = extractvalue { i32, i1 } [[TMP2770]], 0
// CHECK-NEXT:    [[TMP2772:%.*]] = extractvalue { i32, i1 } [[TMP2770]], 1
// CHECK-NEXT:    [[TMP2773:%.*]] = select i1 [[TMP2772]], i32 [[TMP2768]], i32 [[TMP2771]]
// CHECK-NEXT:    store i32 [[TMP2773]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2774:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2775:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2776:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2774]], i32 [[TMP2775]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2777:%.*]] = extractvalue { i32, i1 } [[TMP2776]], 0
// CHECK-NEXT:    [[TMP2778:%.*]] = extractvalue { i32, i1 } [[TMP2776]], 1
// CHECK-NEXT:    br i1 [[TMP2778]], label [[UIX_ATOMIC_EXIT269:%.*]], label [[UIX_ATOMIC_CONT270:%.*]]
// CHECK:       uix.atomic.cont270:
// CHECK-NEXT:    store i32 [[TMP2777]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT269]]
// CHECK:       uix.atomic.exit269:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2779:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2780:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2781:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2779]], i32 [[TMP2780]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2782:%.*]] = extractvalue { i32, i1 } [[TMP2781]], 0
// CHECK-NEXT:    [[TMP2783:%.*]] = extractvalue { i32, i1 } [[TMP2781]], 1
// CHECK-NEXT:    br i1 [[TMP2783]], label [[UIX_ATOMIC_EXIT271:%.*]], label [[UIX_ATOMIC_CONT272:%.*]]
// CHECK:       uix.atomic.cont272:
// CHECK-NEXT:    store i32 [[TMP2782]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT271]]
// CHECK:       uix.atomic.exit271:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2784:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2785:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2786:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2784]], i32 [[TMP2785]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2787:%.*]] = extractvalue { i32, i1 } [[TMP2786]], 1
// CHECK-NEXT:    [[TMP2788:%.*]] = zext i1 [[TMP2787]] to i32
// CHECK-NEXT:    store i32 [[TMP2788]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2789:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2790:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2791:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2789]], i32 [[TMP2790]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2792:%.*]] = extractvalue { i32, i1 } [[TMP2791]], 1
// CHECK-NEXT:    [[TMP2793:%.*]] = zext i1 [[TMP2792]] to i32
// CHECK-NEXT:    store i32 [[TMP2793]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2794:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2795:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2796:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2794]], i32 [[TMP2795]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2797:%.*]] = extractvalue { i32, i1 } [[TMP2796]], 0
// CHECK-NEXT:    [[TMP2798:%.*]] = extractvalue { i32, i1 } [[TMP2796]], 1
// CHECK-NEXT:    br i1 [[TMP2798]], label [[UIX_ATOMIC_EXIT273:%.*]], label [[UIX_ATOMIC_CONT274:%.*]]
// CHECK:       uix.atomic.cont274:
// CHECK-NEXT:    store i32 [[TMP2797]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT273]]
// CHECK:       uix.atomic.exit273:
// CHECK-NEXT:    [[TMP2799:%.*]] = extractvalue { i32, i1 } [[TMP2796]], 1
// CHECK-NEXT:    [[TMP2800:%.*]] = zext i1 [[TMP2799]] to i32
// CHECK-NEXT:    store i32 [[TMP2800]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2801:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP2802:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP2803:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP2801]], i32 [[TMP2802]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP2804:%.*]] = extractvalue { i32, i1 } [[TMP2803]], 0
// CHECK-NEXT:    [[TMP2805:%.*]] = extractvalue { i32, i1 } [[TMP2803]], 1
// CHECK-NEXT:    br i1 [[TMP2805]], label [[UIX_ATOMIC_EXIT275:%.*]], label [[UIX_ATOMIC_CONT276:%.*]]
// CHECK:       uix.atomic.cont276:
// CHECK-NEXT:    store i32 [[TMP2804]], ptr [[UIV]], align 4
// CHECK-NEXT:    br label [[UIX_ATOMIC_EXIT275]]
// CHECK:       uix.atomic.exit275:
// CHECK-NEXT:    [[TMP2806:%.*]] = extractvalue { i32, i1 } [[TMP2803]], 1
// CHECK-NEXT:    [[TMP2807:%.*]] = zext i1 [[TMP2806]] to i32
// CHECK-NEXT:    store i32 [[TMP2807]], ptr [[UIR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2808:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2809:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2808]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP2809]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2810:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2811:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2810]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP2811]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2812:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2813:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2812]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP2813]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2814:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2815:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2814]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP2815]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2816:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2817:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2818:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2816]], i64 [[TMP2817]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2819:%.*]] = extractvalue { i64, i1 } [[TMP2818]], 0
// CHECK-NEXT:    store i64 [[TMP2819]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2820:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2821:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2822:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2820]], i64 [[TMP2821]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2823:%.*]] = extractvalue { i64, i1 } [[TMP2822]], 0
// CHECK-NEXT:    store i64 [[TMP2823]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2824:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2825:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2824]] monotonic, align 8
// CHECK-NEXT:    [[TMP2826:%.*]] = icmp sgt i64 [[TMP2825]], [[TMP2824]]
// CHECK-NEXT:    [[TMP2827:%.*]] = select i1 [[TMP2826]], i64 [[TMP2824]], i64 [[TMP2825]]
// CHECK-NEXT:    store i64 [[TMP2827]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2828:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2829:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2828]] monotonic, align 8
// CHECK-NEXT:    [[TMP2830:%.*]] = icmp slt i64 [[TMP2829]], [[TMP2828]]
// CHECK-NEXT:    [[TMP2831:%.*]] = select i1 [[TMP2830]], i64 [[TMP2828]], i64 [[TMP2829]]
// CHECK-NEXT:    store i64 [[TMP2831]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2832:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2833:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2832]] monotonic, align 8
// CHECK-NEXT:    [[TMP2834:%.*]] = icmp slt i64 [[TMP2833]], [[TMP2832]]
// CHECK-NEXT:    [[TMP2835:%.*]] = select i1 [[TMP2834]], i64 [[TMP2832]], i64 [[TMP2833]]
// CHECK-NEXT:    store i64 [[TMP2835]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2836:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2837:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2836]] monotonic, align 8
// CHECK-NEXT:    [[TMP2838:%.*]] = icmp sgt i64 [[TMP2837]], [[TMP2836]]
// CHECK-NEXT:    [[TMP2839:%.*]] = select i1 [[TMP2838]], i64 [[TMP2836]], i64 [[TMP2837]]
// CHECK-NEXT:    store i64 [[TMP2839]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2840:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2841:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2842:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2840]], i64 [[TMP2841]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2843:%.*]] = extractvalue { i64, i1 } [[TMP2842]], 0
// CHECK-NEXT:    [[TMP2844:%.*]] = extractvalue { i64, i1 } [[TMP2842]], 1
// CHECK-NEXT:    [[TMP2845:%.*]] = select i1 [[TMP2844]], i64 [[TMP2840]], i64 [[TMP2843]]
// CHECK-NEXT:    store i64 [[TMP2845]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2846:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2847:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2848:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2846]], i64 [[TMP2847]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2849:%.*]] = extractvalue { i64, i1 } [[TMP2848]], 0
// CHECK-NEXT:    [[TMP2850:%.*]] = extractvalue { i64, i1 } [[TMP2848]], 1
// CHECK-NEXT:    [[TMP2851:%.*]] = select i1 [[TMP2850]], i64 [[TMP2846]], i64 [[TMP2849]]
// CHECK-NEXT:    store i64 [[TMP2851]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2852:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2853:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2854:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2852]], i64 [[TMP2853]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2855:%.*]] = extractvalue { i64, i1 } [[TMP2854]], 0
// CHECK-NEXT:    [[TMP2856:%.*]] = extractvalue { i64, i1 } [[TMP2854]], 1
// CHECK-NEXT:    br i1 [[TMP2856]], label [[LX_ATOMIC_EXIT:%.*]], label [[LX_ATOMIC_CONT:%.*]]
// CHECK:       lx.atomic.cont:
// CHECK-NEXT:    store i64 [[TMP2855]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT]]
// CHECK:       lx.atomic.exit:
// CHECK-NEXT:    [[TMP2857:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2858:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2859:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2857]], i64 [[TMP2858]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2860:%.*]] = extractvalue { i64, i1 } [[TMP2859]], 0
// CHECK-NEXT:    [[TMP2861:%.*]] = extractvalue { i64, i1 } [[TMP2859]], 1
// CHECK-NEXT:    br i1 [[TMP2861]], label [[LX_ATOMIC_EXIT277:%.*]], label [[LX_ATOMIC_CONT278:%.*]]
// CHECK:       lx.atomic.cont278:
// CHECK-NEXT:    store i64 [[TMP2860]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT277]]
// CHECK:       lx.atomic.exit277:
// CHECK-NEXT:    [[TMP2862:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2863:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2864:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2862]], i64 [[TMP2863]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2865:%.*]] = extractvalue { i64, i1 } [[TMP2864]], 1
// CHECK-NEXT:    [[TMP2866:%.*]] = sext i1 [[TMP2865]] to i64
// CHECK-NEXT:    store i64 [[TMP2866]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP2867:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2868:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2869:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2867]], i64 [[TMP2868]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2870:%.*]] = extractvalue { i64, i1 } [[TMP2869]], 1
// CHECK-NEXT:    [[TMP2871:%.*]] = sext i1 [[TMP2870]] to i64
// CHECK-NEXT:    store i64 [[TMP2871]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP2872:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2873:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2874:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2872]], i64 [[TMP2873]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2875:%.*]] = extractvalue { i64, i1 } [[TMP2874]], 0
// CHECK-NEXT:    [[TMP2876:%.*]] = extractvalue { i64, i1 } [[TMP2874]], 1
// CHECK-NEXT:    br i1 [[TMP2876]], label [[LX_ATOMIC_EXIT279:%.*]], label [[LX_ATOMIC_CONT280:%.*]]
// CHECK:       lx.atomic.cont280:
// CHECK-NEXT:    store i64 [[TMP2875]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT279]]
// CHECK:       lx.atomic.exit279:
// CHECK-NEXT:    [[TMP2877:%.*]] = extractvalue { i64, i1 } [[TMP2874]], 1
// CHECK-NEXT:    [[TMP2878:%.*]] = sext i1 [[TMP2877]] to i64
// CHECK-NEXT:    store i64 [[TMP2878]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP2879:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2880:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2881:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2879]], i64 [[TMP2880]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP2882:%.*]] = extractvalue { i64, i1 } [[TMP2881]], 0
// CHECK-NEXT:    [[TMP2883:%.*]] = extractvalue { i64, i1 } [[TMP2881]], 1
// CHECK-NEXT:    br i1 [[TMP2883]], label [[LX_ATOMIC_EXIT281:%.*]], label [[LX_ATOMIC_CONT282:%.*]]
// CHECK:       lx.atomic.cont282:
// CHECK-NEXT:    store i64 [[TMP2882]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT281]]
// CHECK:       lx.atomic.exit281:
// CHECK-NEXT:    [[TMP2884:%.*]] = extractvalue { i64, i1 } [[TMP2881]], 1
// CHECK-NEXT:    [[TMP2885:%.*]] = sext i1 [[TMP2884]] to i64
// CHECK-NEXT:    store i64 [[TMP2885]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP2886:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2887:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2886]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP2887]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2888:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2889:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2888]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP2889]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2890:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2891:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2890]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP2891]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2892:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2893:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2892]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP2893]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2894:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2895:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2896:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2894]], i64 [[TMP2895]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2897:%.*]] = extractvalue { i64, i1 } [[TMP2896]], 0
// CHECK-NEXT:    store i64 [[TMP2897]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2898:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2899:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2900:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2898]], i64 [[TMP2899]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2901:%.*]] = extractvalue { i64, i1 } [[TMP2900]], 0
// CHECK-NEXT:    store i64 [[TMP2901]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2902:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2903:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2902]] acq_rel, align 8
// CHECK-NEXT:    [[TMP2904:%.*]] = icmp sgt i64 [[TMP2903]], [[TMP2902]]
// CHECK-NEXT:    [[TMP2905:%.*]] = select i1 [[TMP2904]], i64 [[TMP2902]], i64 [[TMP2903]]
// CHECK-NEXT:    store i64 [[TMP2905]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2906:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2907:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2906]] acq_rel, align 8
// CHECK-NEXT:    [[TMP2908:%.*]] = icmp slt i64 [[TMP2907]], [[TMP2906]]
// CHECK-NEXT:    [[TMP2909:%.*]] = select i1 [[TMP2908]], i64 [[TMP2906]], i64 [[TMP2907]]
// CHECK-NEXT:    store i64 [[TMP2909]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2910:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2911:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2910]] acq_rel, align 8
// CHECK-NEXT:    [[TMP2912:%.*]] = icmp slt i64 [[TMP2911]], [[TMP2910]]
// CHECK-NEXT:    [[TMP2913:%.*]] = select i1 [[TMP2912]], i64 [[TMP2910]], i64 [[TMP2911]]
// CHECK-NEXT:    store i64 [[TMP2913]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2914:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2915:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2914]] acq_rel, align 8
// CHECK-NEXT:    [[TMP2916:%.*]] = icmp sgt i64 [[TMP2915]], [[TMP2914]]
// CHECK-NEXT:    [[TMP2917:%.*]] = select i1 [[TMP2916]], i64 [[TMP2914]], i64 [[TMP2915]]
// CHECK-NEXT:    store i64 [[TMP2917]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2918:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2919:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2920:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2918]], i64 [[TMP2919]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2921:%.*]] = extractvalue { i64, i1 } [[TMP2920]], 0
// CHECK-NEXT:    [[TMP2922:%.*]] = extractvalue { i64, i1 } [[TMP2920]], 1
// CHECK-NEXT:    [[TMP2923:%.*]] = select i1 [[TMP2922]], i64 [[TMP2918]], i64 [[TMP2921]]
// CHECK-NEXT:    store i64 [[TMP2923]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2924:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2925:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2926:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2924]], i64 [[TMP2925]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2927:%.*]] = extractvalue { i64, i1 } [[TMP2926]], 0
// CHECK-NEXT:    [[TMP2928:%.*]] = extractvalue { i64, i1 } [[TMP2926]], 1
// CHECK-NEXT:    [[TMP2929:%.*]] = select i1 [[TMP2928]], i64 [[TMP2924]], i64 [[TMP2927]]
// CHECK-NEXT:    store i64 [[TMP2929]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2930:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2931:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2932:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2930]], i64 [[TMP2931]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2933:%.*]] = extractvalue { i64, i1 } [[TMP2932]], 0
// CHECK-NEXT:    [[TMP2934:%.*]] = extractvalue { i64, i1 } [[TMP2932]], 1
// CHECK-NEXT:    br i1 [[TMP2934]], label [[LX_ATOMIC_EXIT283:%.*]], label [[LX_ATOMIC_CONT284:%.*]]
// CHECK:       lx.atomic.cont284:
// CHECK-NEXT:    store i64 [[TMP2933]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT283]]
// CHECK:       lx.atomic.exit283:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2935:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2936:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2937:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2935]], i64 [[TMP2936]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2938:%.*]] = extractvalue { i64, i1 } [[TMP2937]], 0
// CHECK-NEXT:    [[TMP2939:%.*]] = extractvalue { i64, i1 } [[TMP2937]], 1
// CHECK-NEXT:    br i1 [[TMP2939]], label [[LX_ATOMIC_EXIT285:%.*]], label [[LX_ATOMIC_CONT286:%.*]]
// CHECK:       lx.atomic.cont286:
// CHECK-NEXT:    store i64 [[TMP2938]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT285]]
// CHECK:       lx.atomic.exit285:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2940:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2941:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2942:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2940]], i64 [[TMP2941]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2943:%.*]] = extractvalue { i64, i1 } [[TMP2942]], 1
// CHECK-NEXT:    [[TMP2944:%.*]] = sext i1 [[TMP2943]] to i64
// CHECK-NEXT:    store i64 [[TMP2944]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2945:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2946:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2947:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2945]], i64 [[TMP2946]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2948:%.*]] = extractvalue { i64, i1 } [[TMP2947]], 1
// CHECK-NEXT:    [[TMP2949:%.*]] = sext i1 [[TMP2948]] to i64
// CHECK-NEXT:    store i64 [[TMP2949]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2950:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2951:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2952:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2950]], i64 [[TMP2951]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2953:%.*]] = extractvalue { i64, i1 } [[TMP2952]], 0
// CHECK-NEXT:    [[TMP2954:%.*]] = extractvalue { i64, i1 } [[TMP2952]], 1
// CHECK-NEXT:    br i1 [[TMP2954]], label [[LX_ATOMIC_EXIT287:%.*]], label [[LX_ATOMIC_CONT288:%.*]]
// CHECK:       lx.atomic.cont288:
// CHECK-NEXT:    store i64 [[TMP2953]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT287]]
// CHECK:       lx.atomic.exit287:
// CHECK-NEXT:    [[TMP2955:%.*]] = extractvalue { i64, i1 } [[TMP2952]], 1
// CHECK-NEXT:    [[TMP2956:%.*]] = sext i1 [[TMP2955]] to i64
// CHECK-NEXT:    store i64 [[TMP2956]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2957:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2958:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2959:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2957]], i64 [[TMP2958]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP2960:%.*]] = extractvalue { i64, i1 } [[TMP2959]], 0
// CHECK-NEXT:    [[TMP2961:%.*]] = extractvalue { i64, i1 } [[TMP2959]], 1
// CHECK-NEXT:    br i1 [[TMP2961]], label [[LX_ATOMIC_EXIT289:%.*]], label [[LX_ATOMIC_CONT290:%.*]]
// CHECK:       lx.atomic.cont290:
// CHECK-NEXT:    store i64 [[TMP2960]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT289]]
// CHECK:       lx.atomic.exit289:
// CHECK-NEXT:    [[TMP2962:%.*]] = extractvalue { i64, i1 } [[TMP2959]], 1
// CHECK-NEXT:    [[TMP2963:%.*]] = sext i1 [[TMP2962]] to i64
// CHECK-NEXT:    store i64 [[TMP2963]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP2964:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2965:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2964]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP2965]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2966:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2967:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2966]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP2967]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2968:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2969:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2968]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP2969]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2970:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2971:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2970]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP2971]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2972:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2973:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2974:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2972]], i64 [[TMP2973]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP2975:%.*]] = extractvalue { i64, i1 } [[TMP2974]], 0
// CHECK-NEXT:    store i64 [[TMP2975]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2976:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2977:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2978:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2976]], i64 [[TMP2977]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP2979:%.*]] = extractvalue { i64, i1 } [[TMP2978]], 0
// CHECK-NEXT:    store i64 [[TMP2979]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2980:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2981:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2980]] acquire, align 8
// CHECK-NEXT:    [[TMP2982:%.*]] = icmp sgt i64 [[TMP2981]], [[TMP2980]]
// CHECK-NEXT:    [[TMP2983:%.*]] = select i1 [[TMP2982]], i64 [[TMP2980]], i64 [[TMP2981]]
// CHECK-NEXT:    store i64 [[TMP2983]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2984:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2985:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2984]] acquire, align 8
// CHECK-NEXT:    [[TMP2986:%.*]] = icmp slt i64 [[TMP2985]], [[TMP2984]]
// CHECK-NEXT:    [[TMP2987:%.*]] = select i1 [[TMP2986]], i64 [[TMP2984]], i64 [[TMP2985]]
// CHECK-NEXT:    store i64 [[TMP2987]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2988:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2989:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP2988]] acquire, align 8
// CHECK-NEXT:    [[TMP2990:%.*]] = icmp slt i64 [[TMP2989]], [[TMP2988]]
// CHECK-NEXT:    [[TMP2991:%.*]] = select i1 [[TMP2990]], i64 [[TMP2988]], i64 [[TMP2989]]
// CHECK-NEXT:    store i64 [[TMP2991]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2992:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2993:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2992]] acquire, align 8
// CHECK-NEXT:    [[TMP2994:%.*]] = icmp sgt i64 [[TMP2993]], [[TMP2992]]
// CHECK-NEXT:    [[TMP2995:%.*]] = select i1 [[TMP2994]], i64 [[TMP2992]], i64 [[TMP2993]]
// CHECK-NEXT:    store i64 [[TMP2995]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2996:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP2997:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP2998:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP2996]], i64 [[TMP2997]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP2999:%.*]] = extractvalue { i64, i1 } [[TMP2998]], 0
// CHECK-NEXT:    [[TMP3000:%.*]] = extractvalue { i64, i1 } [[TMP2998]], 1
// CHECK-NEXT:    [[TMP3001:%.*]] = select i1 [[TMP3000]], i64 [[TMP2996]], i64 [[TMP2999]]
// CHECK-NEXT:    store i64 [[TMP3001]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3002:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3003:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3004:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3002]], i64 [[TMP3003]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3005:%.*]] = extractvalue { i64, i1 } [[TMP3004]], 0
// CHECK-NEXT:    [[TMP3006:%.*]] = extractvalue { i64, i1 } [[TMP3004]], 1
// CHECK-NEXT:    [[TMP3007:%.*]] = select i1 [[TMP3006]], i64 [[TMP3002]], i64 [[TMP3005]]
// CHECK-NEXT:    store i64 [[TMP3007]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3008:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3009:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3010:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3008]], i64 [[TMP3009]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3011:%.*]] = extractvalue { i64, i1 } [[TMP3010]], 0
// CHECK-NEXT:    [[TMP3012:%.*]] = extractvalue { i64, i1 } [[TMP3010]], 1
// CHECK-NEXT:    br i1 [[TMP3012]], label [[LX_ATOMIC_EXIT291:%.*]], label [[LX_ATOMIC_CONT292:%.*]]
// CHECK:       lx.atomic.cont292:
// CHECK-NEXT:    store i64 [[TMP3011]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT291]]
// CHECK:       lx.atomic.exit291:
// CHECK-NEXT:    [[TMP3013:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3014:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3015:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3013]], i64 [[TMP3014]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3016:%.*]] = extractvalue { i64, i1 } [[TMP3015]], 0
// CHECK-NEXT:    [[TMP3017:%.*]] = extractvalue { i64, i1 } [[TMP3015]], 1
// CHECK-NEXT:    br i1 [[TMP3017]], label [[LX_ATOMIC_EXIT293:%.*]], label [[LX_ATOMIC_CONT294:%.*]]
// CHECK:       lx.atomic.cont294:
// CHECK-NEXT:    store i64 [[TMP3016]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT293]]
// CHECK:       lx.atomic.exit293:
// CHECK-NEXT:    [[TMP3018:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3019:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3020:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3018]], i64 [[TMP3019]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3021:%.*]] = extractvalue { i64, i1 } [[TMP3020]], 1
// CHECK-NEXT:    [[TMP3022:%.*]] = sext i1 [[TMP3021]] to i64
// CHECK-NEXT:    store i64 [[TMP3022]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3023:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3024:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3025:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3023]], i64 [[TMP3024]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3026:%.*]] = extractvalue { i64, i1 } [[TMP3025]], 1
// CHECK-NEXT:    [[TMP3027:%.*]] = sext i1 [[TMP3026]] to i64
// CHECK-NEXT:    store i64 [[TMP3027]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3028:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3029:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3030:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3028]], i64 [[TMP3029]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3031:%.*]] = extractvalue { i64, i1 } [[TMP3030]], 0
// CHECK-NEXT:    [[TMP3032:%.*]] = extractvalue { i64, i1 } [[TMP3030]], 1
// CHECK-NEXT:    br i1 [[TMP3032]], label [[LX_ATOMIC_EXIT295:%.*]], label [[LX_ATOMIC_CONT296:%.*]]
// CHECK:       lx.atomic.cont296:
// CHECK-NEXT:    store i64 [[TMP3031]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT295]]
// CHECK:       lx.atomic.exit295:
// CHECK-NEXT:    [[TMP3033:%.*]] = extractvalue { i64, i1 } [[TMP3030]], 1
// CHECK-NEXT:    [[TMP3034:%.*]] = sext i1 [[TMP3033]] to i64
// CHECK-NEXT:    store i64 [[TMP3034]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3035:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3036:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3037:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3035]], i64 [[TMP3036]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3038:%.*]] = extractvalue { i64, i1 } [[TMP3037]], 0
// CHECK-NEXT:    [[TMP3039:%.*]] = extractvalue { i64, i1 } [[TMP3037]], 1
// CHECK-NEXT:    br i1 [[TMP3039]], label [[LX_ATOMIC_EXIT297:%.*]], label [[LX_ATOMIC_CONT298:%.*]]
// CHECK:       lx.atomic.cont298:
// CHECK-NEXT:    store i64 [[TMP3038]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT297]]
// CHECK:       lx.atomic.exit297:
// CHECK-NEXT:    [[TMP3040:%.*]] = extractvalue { i64, i1 } [[TMP3037]], 1
// CHECK-NEXT:    [[TMP3041:%.*]] = sext i1 [[TMP3040]] to i64
// CHECK-NEXT:    store i64 [[TMP3041]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3042:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3043:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3042]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3043]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3044:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3045:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3044]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3045]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3046:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3047:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3046]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3047]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3048:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3049:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3048]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3049]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3050:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3051:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3052:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3050]], i64 [[TMP3051]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3053:%.*]] = extractvalue { i64, i1 } [[TMP3052]], 0
// CHECK-NEXT:    store i64 [[TMP3053]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3054:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3055:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3056:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3054]], i64 [[TMP3055]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3057:%.*]] = extractvalue { i64, i1 } [[TMP3056]], 0
// CHECK-NEXT:    store i64 [[TMP3057]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3058:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3059:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3058]] monotonic, align 8
// CHECK-NEXT:    [[TMP3060:%.*]] = icmp sgt i64 [[TMP3059]], [[TMP3058]]
// CHECK-NEXT:    [[TMP3061:%.*]] = select i1 [[TMP3060]], i64 [[TMP3058]], i64 [[TMP3059]]
// CHECK-NEXT:    store i64 [[TMP3061]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3062:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3063:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3062]] monotonic, align 8
// CHECK-NEXT:    [[TMP3064:%.*]] = icmp slt i64 [[TMP3063]], [[TMP3062]]
// CHECK-NEXT:    [[TMP3065:%.*]] = select i1 [[TMP3064]], i64 [[TMP3062]], i64 [[TMP3063]]
// CHECK-NEXT:    store i64 [[TMP3065]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3066:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3067:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3066]] monotonic, align 8
// CHECK-NEXT:    [[TMP3068:%.*]] = icmp slt i64 [[TMP3067]], [[TMP3066]]
// CHECK-NEXT:    [[TMP3069:%.*]] = select i1 [[TMP3068]], i64 [[TMP3066]], i64 [[TMP3067]]
// CHECK-NEXT:    store i64 [[TMP3069]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3070:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3071:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3070]] monotonic, align 8
// CHECK-NEXT:    [[TMP3072:%.*]] = icmp sgt i64 [[TMP3071]], [[TMP3070]]
// CHECK-NEXT:    [[TMP3073:%.*]] = select i1 [[TMP3072]], i64 [[TMP3070]], i64 [[TMP3071]]
// CHECK-NEXT:    store i64 [[TMP3073]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3074:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3075:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3076:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3074]], i64 [[TMP3075]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3077:%.*]] = extractvalue { i64, i1 } [[TMP3076]], 0
// CHECK-NEXT:    [[TMP3078:%.*]] = extractvalue { i64, i1 } [[TMP3076]], 1
// CHECK-NEXT:    [[TMP3079:%.*]] = select i1 [[TMP3078]], i64 [[TMP3074]], i64 [[TMP3077]]
// CHECK-NEXT:    store i64 [[TMP3079]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3080:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3081:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3082:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3080]], i64 [[TMP3081]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3083:%.*]] = extractvalue { i64, i1 } [[TMP3082]], 0
// CHECK-NEXT:    [[TMP3084:%.*]] = extractvalue { i64, i1 } [[TMP3082]], 1
// CHECK-NEXT:    [[TMP3085:%.*]] = select i1 [[TMP3084]], i64 [[TMP3080]], i64 [[TMP3083]]
// CHECK-NEXT:    store i64 [[TMP3085]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP3086:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3087:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3088:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3086]], i64 [[TMP3087]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3089:%.*]] = extractvalue { i64, i1 } [[TMP3088]], 0
// CHECK-NEXT:    [[TMP3090:%.*]] = extractvalue { i64, i1 } [[TMP3088]], 1
// CHECK-NEXT:    br i1 [[TMP3090]], label [[LX_ATOMIC_EXIT299:%.*]], label [[LX_ATOMIC_CONT300:%.*]]
// CHECK:       lx.atomic.cont300:
// CHECK-NEXT:    store i64 [[TMP3089]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT299]]
// CHECK:       lx.atomic.exit299:
// CHECK-NEXT:    [[TMP3091:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3092:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3093:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3091]], i64 [[TMP3092]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3094:%.*]] = extractvalue { i64, i1 } [[TMP3093]], 0
// CHECK-NEXT:    [[TMP3095:%.*]] = extractvalue { i64, i1 } [[TMP3093]], 1
// CHECK-NEXT:    br i1 [[TMP3095]], label [[LX_ATOMIC_EXIT301:%.*]], label [[LX_ATOMIC_CONT302:%.*]]
// CHECK:       lx.atomic.cont302:
// CHECK-NEXT:    store i64 [[TMP3094]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT301]]
// CHECK:       lx.atomic.exit301:
// CHECK-NEXT:    [[TMP3096:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3097:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3098:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3096]], i64 [[TMP3097]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3099:%.*]] = extractvalue { i64, i1 } [[TMP3098]], 1
// CHECK-NEXT:    [[TMP3100:%.*]] = sext i1 [[TMP3099]] to i64
// CHECK-NEXT:    store i64 [[TMP3100]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3101:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3102:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3103:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3101]], i64 [[TMP3102]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3104:%.*]] = extractvalue { i64, i1 } [[TMP3103]], 1
// CHECK-NEXT:    [[TMP3105:%.*]] = sext i1 [[TMP3104]] to i64
// CHECK-NEXT:    store i64 [[TMP3105]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3106:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3107:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3108:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3106]], i64 [[TMP3107]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3109:%.*]] = extractvalue { i64, i1 } [[TMP3108]], 0
// CHECK-NEXT:    [[TMP3110:%.*]] = extractvalue { i64, i1 } [[TMP3108]], 1
// CHECK-NEXT:    br i1 [[TMP3110]], label [[LX_ATOMIC_EXIT303:%.*]], label [[LX_ATOMIC_CONT304:%.*]]
// CHECK:       lx.atomic.cont304:
// CHECK-NEXT:    store i64 [[TMP3109]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT303]]
// CHECK:       lx.atomic.exit303:
// CHECK-NEXT:    [[TMP3111:%.*]] = extractvalue { i64, i1 } [[TMP3108]], 1
// CHECK-NEXT:    [[TMP3112:%.*]] = sext i1 [[TMP3111]] to i64
// CHECK-NEXT:    store i64 [[TMP3112]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3113:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3114:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3115:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3113]], i64 [[TMP3114]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3116:%.*]] = extractvalue { i64, i1 } [[TMP3115]], 0
// CHECK-NEXT:    [[TMP3117:%.*]] = extractvalue { i64, i1 } [[TMP3115]], 1
// CHECK-NEXT:    br i1 [[TMP3117]], label [[LX_ATOMIC_EXIT305:%.*]], label [[LX_ATOMIC_CONT306:%.*]]
// CHECK:       lx.atomic.cont306:
// CHECK-NEXT:    store i64 [[TMP3116]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT305]]
// CHECK:       lx.atomic.exit305:
// CHECK-NEXT:    [[TMP3118:%.*]] = extractvalue { i64, i1 } [[TMP3115]], 1
// CHECK-NEXT:    [[TMP3119:%.*]] = sext i1 [[TMP3118]] to i64
// CHECK-NEXT:    store i64 [[TMP3119]], ptr [[LR]], align 8
// CHECK-NEXT:    [[TMP3120:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3121:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3120]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3121]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3122:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3123:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3122]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3123]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3124:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3125:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3124]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3125]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3126:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3127:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3126]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3127]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3128:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3129:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3130:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3128]], i64 [[TMP3129]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3131:%.*]] = extractvalue { i64, i1 } [[TMP3130]], 0
// CHECK-NEXT:    store i64 [[TMP3131]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3132:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3133:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3134:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3132]], i64 [[TMP3133]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3135:%.*]] = extractvalue { i64, i1 } [[TMP3134]], 0
// CHECK-NEXT:    store i64 [[TMP3135]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3136:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3137:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3136]] release, align 8
// CHECK-NEXT:    [[TMP3138:%.*]] = icmp sgt i64 [[TMP3137]], [[TMP3136]]
// CHECK-NEXT:    [[TMP3139:%.*]] = select i1 [[TMP3138]], i64 [[TMP3136]], i64 [[TMP3137]]
// CHECK-NEXT:    store i64 [[TMP3139]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3140:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3141:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3140]] release, align 8
// CHECK-NEXT:    [[TMP3142:%.*]] = icmp slt i64 [[TMP3141]], [[TMP3140]]
// CHECK-NEXT:    [[TMP3143:%.*]] = select i1 [[TMP3142]], i64 [[TMP3140]], i64 [[TMP3141]]
// CHECK-NEXT:    store i64 [[TMP3143]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3144:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3145:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3144]] release, align 8
// CHECK-NEXT:    [[TMP3146:%.*]] = icmp slt i64 [[TMP3145]], [[TMP3144]]
// CHECK-NEXT:    [[TMP3147:%.*]] = select i1 [[TMP3146]], i64 [[TMP3144]], i64 [[TMP3145]]
// CHECK-NEXT:    store i64 [[TMP3147]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3148:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3149:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3148]] release, align 8
// CHECK-NEXT:    [[TMP3150:%.*]] = icmp sgt i64 [[TMP3149]], [[TMP3148]]
// CHECK-NEXT:    [[TMP3151:%.*]] = select i1 [[TMP3150]], i64 [[TMP3148]], i64 [[TMP3149]]
// CHECK-NEXT:    store i64 [[TMP3151]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3152:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3153:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3154:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3152]], i64 [[TMP3153]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3155:%.*]] = extractvalue { i64, i1 } [[TMP3154]], 0
// CHECK-NEXT:    [[TMP3156:%.*]] = extractvalue { i64, i1 } [[TMP3154]], 1
// CHECK-NEXT:    [[TMP3157:%.*]] = select i1 [[TMP3156]], i64 [[TMP3152]], i64 [[TMP3155]]
// CHECK-NEXT:    store i64 [[TMP3157]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3158:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3159:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3160:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3158]], i64 [[TMP3159]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3161:%.*]] = extractvalue { i64, i1 } [[TMP3160]], 0
// CHECK-NEXT:    [[TMP3162:%.*]] = extractvalue { i64, i1 } [[TMP3160]], 1
// CHECK-NEXT:    [[TMP3163:%.*]] = select i1 [[TMP3162]], i64 [[TMP3158]], i64 [[TMP3161]]
// CHECK-NEXT:    store i64 [[TMP3163]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3164:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3165:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3166:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3164]], i64 [[TMP3165]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3167:%.*]] = extractvalue { i64, i1 } [[TMP3166]], 0
// CHECK-NEXT:    [[TMP3168:%.*]] = extractvalue { i64, i1 } [[TMP3166]], 1
// CHECK-NEXT:    br i1 [[TMP3168]], label [[LX_ATOMIC_EXIT307:%.*]], label [[LX_ATOMIC_CONT308:%.*]]
// CHECK:       lx.atomic.cont308:
// CHECK-NEXT:    store i64 [[TMP3167]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT307]]
// CHECK:       lx.atomic.exit307:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3169:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3170:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3171:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3169]], i64 [[TMP3170]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3172:%.*]] = extractvalue { i64, i1 } [[TMP3171]], 0
// CHECK-NEXT:    [[TMP3173:%.*]] = extractvalue { i64, i1 } [[TMP3171]], 1
// CHECK-NEXT:    br i1 [[TMP3173]], label [[LX_ATOMIC_EXIT309:%.*]], label [[LX_ATOMIC_CONT310:%.*]]
// CHECK:       lx.atomic.cont310:
// CHECK-NEXT:    store i64 [[TMP3172]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT309]]
// CHECK:       lx.atomic.exit309:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3174:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3175:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3176:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3174]], i64 [[TMP3175]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3177:%.*]] = extractvalue { i64, i1 } [[TMP3176]], 1
// CHECK-NEXT:    [[TMP3178:%.*]] = sext i1 [[TMP3177]] to i64
// CHECK-NEXT:    store i64 [[TMP3178]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3179:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3180:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3181:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3179]], i64 [[TMP3180]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3182:%.*]] = extractvalue { i64, i1 } [[TMP3181]], 1
// CHECK-NEXT:    [[TMP3183:%.*]] = sext i1 [[TMP3182]] to i64
// CHECK-NEXT:    store i64 [[TMP3183]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3184:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3185:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3186:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3184]], i64 [[TMP3185]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3187:%.*]] = extractvalue { i64, i1 } [[TMP3186]], 0
// CHECK-NEXT:    [[TMP3188:%.*]] = extractvalue { i64, i1 } [[TMP3186]], 1
// CHECK-NEXT:    br i1 [[TMP3188]], label [[LX_ATOMIC_EXIT311:%.*]], label [[LX_ATOMIC_CONT312:%.*]]
// CHECK:       lx.atomic.cont312:
// CHECK-NEXT:    store i64 [[TMP3187]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT311]]
// CHECK:       lx.atomic.exit311:
// CHECK-NEXT:    [[TMP3189:%.*]] = extractvalue { i64, i1 } [[TMP3186]], 1
// CHECK-NEXT:    [[TMP3190:%.*]] = sext i1 [[TMP3189]] to i64
// CHECK-NEXT:    store i64 [[TMP3190]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3191:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3192:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3193:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3191]], i64 [[TMP3192]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3194:%.*]] = extractvalue { i64, i1 } [[TMP3193]], 0
// CHECK-NEXT:    [[TMP3195:%.*]] = extractvalue { i64, i1 } [[TMP3193]], 1
// CHECK-NEXT:    br i1 [[TMP3195]], label [[LX_ATOMIC_EXIT313:%.*]], label [[LX_ATOMIC_CONT314:%.*]]
// CHECK:       lx.atomic.cont314:
// CHECK-NEXT:    store i64 [[TMP3194]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT313]]
// CHECK:       lx.atomic.exit313:
// CHECK-NEXT:    [[TMP3196:%.*]] = extractvalue { i64, i1 } [[TMP3193]], 1
// CHECK-NEXT:    [[TMP3197:%.*]] = sext i1 [[TMP3196]] to i64
// CHECK-NEXT:    store i64 [[TMP3197]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3198:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3199:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3198]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3199]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3200:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3201:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3200]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3201]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3202:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3203:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3202]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3203]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3204:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3205:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3204]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3205]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3206:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3207:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3208:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3206]], i64 [[TMP3207]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3209:%.*]] = extractvalue { i64, i1 } [[TMP3208]], 0
// CHECK-NEXT:    store i64 [[TMP3209]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3210:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3211:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3212:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3210]], i64 [[TMP3211]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3213:%.*]] = extractvalue { i64, i1 } [[TMP3212]], 0
// CHECK-NEXT:    store i64 [[TMP3213]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3214:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3215:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3214]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3216:%.*]] = icmp sgt i64 [[TMP3215]], [[TMP3214]]
// CHECK-NEXT:    [[TMP3217:%.*]] = select i1 [[TMP3216]], i64 [[TMP3214]], i64 [[TMP3215]]
// CHECK-NEXT:    store i64 [[TMP3217]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3218:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3219:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3218]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3220:%.*]] = icmp slt i64 [[TMP3219]], [[TMP3218]]
// CHECK-NEXT:    [[TMP3221:%.*]] = select i1 [[TMP3220]], i64 [[TMP3218]], i64 [[TMP3219]]
// CHECK-NEXT:    store i64 [[TMP3221]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3222:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3223:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP3222]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3224:%.*]] = icmp slt i64 [[TMP3223]], [[TMP3222]]
// CHECK-NEXT:    [[TMP3225:%.*]] = select i1 [[TMP3224]], i64 [[TMP3222]], i64 [[TMP3223]]
// CHECK-NEXT:    store i64 [[TMP3225]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3226:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3227:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP3226]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3228:%.*]] = icmp sgt i64 [[TMP3227]], [[TMP3226]]
// CHECK-NEXT:    [[TMP3229:%.*]] = select i1 [[TMP3228]], i64 [[TMP3226]], i64 [[TMP3227]]
// CHECK-NEXT:    store i64 [[TMP3229]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3230:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3231:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3232:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3230]], i64 [[TMP3231]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3233:%.*]] = extractvalue { i64, i1 } [[TMP3232]], 0
// CHECK-NEXT:    [[TMP3234:%.*]] = extractvalue { i64, i1 } [[TMP3232]], 1
// CHECK-NEXT:    [[TMP3235:%.*]] = select i1 [[TMP3234]], i64 [[TMP3230]], i64 [[TMP3233]]
// CHECK-NEXT:    store i64 [[TMP3235]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3236:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3237:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3238:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3236]], i64 [[TMP3237]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3239:%.*]] = extractvalue { i64, i1 } [[TMP3238]], 0
// CHECK-NEXT:    [[TMP3240:%.*]] = extractvalue { i64, i1 } [[TMP3238]], 1
// CHECK-NEXT:    [[TMP3241:%.*]] = select i1 [[TMP3240]], i64 [[TMP3236]], i64 [[TMP3239]]
// CHECK-NEXT:    store i64 [[TMP3241]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3242:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3243:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3244:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3242]], i64 [[TMP3243]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3245:%.*]] = extractvalue { i64, i1 } [[TMP3244]], 0
// CHECK-NEXT:    [[TMP3246:%.*]] = extractvalue { i64, i1 } [[TMP3244]], 1
// CHECK-NEXT:    br i1 [[TMP3246]], label [[LX_ATOMIC_EXIT315:%.*]], label [[LX_ATOMIC_CONT316:%.*]]
// CHECK:       lx.atomic.cont316:
// CHECK-NEXT:    store i64 [[TMP3245]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT315]]
// CHECK:       lx.atomic.exit315:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3247:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3248:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3249:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3247]], i64 [[TMP3248]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3250:%.*]] = extractvalue { i64, i1 } [[TMP3249]], 0
// CHECK-NEXT:    [[TMP3251:%.*]] = extractvalue { i64, i1 } [[TMP3249]], 1
// CHECK-NEXT:    br i1 [[TMP3251]], label [[LX_ATOMIC_EXIT317:%.*]], label [[LX_ATOMIC_CONT318:%.*]]
// CHECK:       lx.atomic.cont318:
// CHECK-NEXT:    store i64 [[TMP3250]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT317]]
// CHECK:       lx.atomic.exit317:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3252:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3253:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3254:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3252]], i64 [[TMP3253]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3255:%.*]] = extractvalue { i64, i1 } [[TMP3254]], 1
// CHECK-NEXT:    [[TMP3256:%.*]] = sext i1 [[TMP3255]] to i64
// CHECK-NEXT:    store i64 [[TMP3256]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3257:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3258:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3259:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3257]], i64 [[TMP3258]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3260:%.*]] = extractvalue { i64, i1 } [[TMP3259]], 1
// CHECK-NEXT:    [[TMP3261:%.*]] = sext i1 [[TMP3260]] to i64
// CHECK-NEXT:    store i64 [[TMP3261]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3262:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3263:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3264:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3262]], i64 [[TMP3263]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3265:%.*]] = extractvalue { i64, i1 } [[TMP3264]], 0
// CHECK-NEXT:    [[TMP3266:%.*]] = extractvalue { i64, i1 } [[TMP3264]], 1
// CHECK-NEXT:    br i1 [[TMP3266]], label [[LX_ATOMIC_EXIT319:%.*]], label [[LX_ATOMIC_CONT320:%.*]]
// CHECK:       lx.atomic.cont320:
// CHECK-NEXT:    store i64 [[TMP3265]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT319]]
// CHECK:       lx.atomic.exit319:
// CHECK-NEXT:    [[TMP3267:%.*]] = extractvalue { i64, i1 } [[TMP3264]], 1
// CHECK-NEXT:    [[TMP3268:%.*]] = sext i1 [[TMP3267]] to i64
// CHECK-NEXT:    store i64 [[TMP3268]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3269:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3270:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP3271:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP3269]], i64 [[TMP3270]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3272:%.*]] = extractvalue { i64, i1 } [[TMP3271]], 0
// CHECK-NEXT:    [[TMP3273:%.*]] = extractvalue { i64, i1 } [[TMP3271]], 1
// CHECK-NEXT:    br i1 [[TMP3273]], label [[LX_ATOMIC_EXIT321:%.*]], label [[LX_ATOMIC_CONT322:%.*]]
// CHECK:       lx.atomic.cont322:
// CHECK-NEXT:    store i64 [[TMP3272]], ptr [[LV]], align 8
// CHECK-NEXT:    br label [[LX_ATOMIC_EXIT321]]
// CHECK:       lx.atomic.exit321:
// CHECK-NEXT:    [[TMP3274:%.*]] = extractvalue { i64, i1 } [[TMP3271]], 1
// CHECK-NEXT:    [[TMP3275:%.*]] = sext i1 [[TMP3274]] to i64
// CHECK-NEXT:    store i64 [[TMP3275]], ptr [[LR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3276:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3277:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3276]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3277]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3278:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3279:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3278]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3279]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3280:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3281:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3280]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3281]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3282:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3283:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3282]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3283]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3284:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3285:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3286:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3284]], i64 [[TMP3285]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3287:%.*]] = extractvalue { i64, i1 } [[TMP3286]], 0
// CHECK-NEXT:    store i64 [[TMP3287]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3288:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3289:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3290:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3288]], i64 [[TMP3289]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3291:%.*]] = extractvalue { i64, i1 } [[TMP3290]], 0
// CHECK-NEXT:    store i64 [[TMP3291]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3292:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3293:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3292]] monotonic, align 8
// CHECK-NEXT:    [[TMP3294:%.*]] = icmp ugt i64 [[TMP3293]], [[TMP3292]]
// CHECK-NEXT:    [[TMP3295:%.*]] = select i1 [[TMP3294]], i64 [[TMP3292]], i64 [[TMP3293]]
// CHECK-NEXT:    store i64 [[TMP3295]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3296:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3297:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3296]] monotonic, align 8
// CHECK-NEXT:    [[TMP3298:%.*]] = icmp ult i64 [[TMP3297]], [[TMP3296]]
// CHECK-NEXT:    [[TMP3299:%.*]] = select i1 [[TMP3298]], i64 [[TMP3296]], i64 [[TMP3297]]
// CHECK-NEXT:    store i64 [[TMP3299]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3300:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3301:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3300]] monotonic, align 8
// CHECK-NEXT:    [[TMP3302:%.*]] = icmp ult i64 [[TMP3301]], [[TMP3300]]
// CHECK-NEXT:    [[TMP3303:%.*]] = select i1 [[TMP3302]], i64 [[TMP3300]], i64 [[TMP3301]]
// CHECK-NEXT:    store i64 [[TMP3303]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3304:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3305:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3304]] monotonic, align 8
// CHECK-NEXT:    [[TMP3306:%.*]] = icmp ugt i64 [[TMP3305]], [[TMP3304]]
// CHECK-NEXT:    [[TMP3307:%.*]] = select i1 [[TMP3306]], i64 [[TMP3304]], i64 [[TMP3305]]
// CHECK-NEXT:    store i64 [[TMP3307]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3308:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3309:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3310:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3308]], i64 [[TMP3309]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3311:%.*]] = extractvalue { i64, i1 } [[TMP3310]], 0
// CHECK-NEXT:    [[TMP3312:%.*]] = extractvalue { i64, i1 } [[TMP3310]], 1
// CHECK-NEXT:    [[TMP3313:%.*]] = select i1 [[TMP3312]], i64 [[TMP3308]], i64 [[TMP3311]]
// CHECK-NEXT:    store i64 [[TMP3313]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3314:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3315:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3316:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3314]], i64 [[TMP3315]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3317:%.*]] = extractvalue { i64, i1 } [[TMP3316]], 0
// CHECK-NEXT:    [[TMP3318:%.*]] = extractvalue { i64, i1 } [[TMP3316]], 1
// CHECK-NEXT:    [[TMP3319:%.*]] = select i1 [[TMP3318]], i64 [[TMP3314]], i64 [[TMP3317]]
// CHECK-NEXT:    store i64 [[TMP3319]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3320:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3321:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3322:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3320]], i64 [[TMP3321]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3323:%.*]] = extractvalue { i64, i1 } [[TMP3322]], 0
// CHECK-NEXT:    [[TMP3324:%.*]] = extractvalue { i64, i1 } [[TMP3322]], 1
// CHECK-NEXT:    br i1 [[TMP3324]], label [[ULX_ATOMIC_EXIT:%.*]], label [[ULX_ATOMIC_CONT:%.*]]
// CHECK:       ulx.atomic.cont:
// CHECK-NEXT:    store i64 [[TMP3323]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT]]
// CHECK:       ulx.atomic.exit:
// CHECK-NEXT:    [[TMP3325:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3326:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3327:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3325]], i64 [[TMP3326]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3328:%.*]] = extractvalue { i64, i1 } [[TMP3327]], 0
// CHECK-NEXT:    [[TMP3329:%.*]] = extractvalue { i64, i1 } [[TMP3327]], 1
// CHECK-NEXT:    br i1 [[TMP3329]], label [[ULX_ATOMIC_EXIT323:%.*]], label [[ULX_ATOMIC_CONT324:%.*]]
// CHECK:       ulx.atomic.cont324:
// CHECK-NEXT:    store i64 [[TMP3328]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT323]]
// CHECK:       ulx.atomic.exit323:
// CHECK-NEXT:    [[TMP3330:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3331:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3332:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3330]], i64 [[TMP3331]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3333:%.*]] = extractvalue { i64, i1 } [[TMP3332]], 1
// CHECK-NEXT:    [[TMP3334:%.*]] = zext i1 [[TMP3333]] to i64
// CHECK-NEXT:    store i64 [[TMP3334]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3335:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3336:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3337:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3335]], i64 [[TMP3336]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3338:%.*]] = extractvalue { i64, i1 } [[TMP3337]], 1
// CHECK-NEXT:    [[TMP3339:%.*]] = zext i1 [[TMP3338]] to i64
// CHECK-NEXT:    store i64 [[TMP3339]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3340:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3341:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3342:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3340]], i64 [[TMP3341]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3343:%.*]] = extractvalue { i64, i1 } [[TMP3342]], 0
// CHECK-NEXT:    [[TMP3344:%.*]] = extractvalue { i64, i1 } [[TMP3342]], 1
// CHECK-NEXT:    br i1 [[TMP3344]], label [[ULX_ATOMIC_EXIT325:%.*]], label [[ULX_ATOMIC_CONT326:%.*]]
// CHECK:       ulx.atomic.cont326:
// CHECK-NEXT:    store i64 [[TMP3343]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT325]]
// CHECK:       ulx.atomic.exit325:
// CHECK-NEXT:    [[TMP3345:%.*]] = extractvalue { i64, i1 } [[TMP3342]], 1
// CHECK-NEXT:    [[TMP3346:%.*]] = zext i1 [[TMP3345]] to i64
// CHECK-NEXT:    store i64 [[TMP3346]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3347:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3348:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3349:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3347]], i64 [[TMP3348]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3350:%.*]] = extractvalue { i64, i1 } [[TMP3349]], 0
// CHECK-NEXT:    [[TMP3351:%.*]] = extractvalue { i64, i1 } [[TMP3349]], 1
// CHECK-NEXT:    br i1 [[TMP3351]], label [[ULX_ATOMIC_EXIT327:%.*]], label [[ULX_ATOMIC_CONT328:%.*]]
// CHECK:       ulx.atomic.cont328:
// CHECK-NEXT:    store i64 [[TMP3350]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT327]]
// CHECK:       ulx.atomic.exit327:
// CHECK-NEXT:    [[TMP3352:%.*]] = extractvalue { i64, i1 } [[TMP3349]], 1
// CHECK-NEXT:    [[TMP3353:%.*]] = zext i1 [[TMP3352]] to i64
// CHECK-NEXT:    store i64 [[TMP3353]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3354:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3355:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3354]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3355]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3356:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3357:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3356]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3357]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3358:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3359:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3358]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3359]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3360:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3361:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3360]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3361]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3362:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3363:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3364:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3362]], i64 [[TMP3363]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3365:%.*]] = extractvalue { i64, i1 } [[TMP3364]], 0
// CHECK-NEXT:    store i64 [[TMP3365]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3366:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3367:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3368:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3366]], i64 [[TMP3367]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3369:%.*]] = extractvalue { i64, i1 } [[TMP3368]], 0
// CHECK-NEXT:    store i64 [[TMP3369]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3370:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3371:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3370]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3372:%.*]] = icmp ugt i64 [[TMP3371]], [[TMP3370]]
// CHECK-NEXT:    [[TMP3373:%.*]] = select i1 [[TMP3372]], i64 [[TMP3370]], i64 [[TMP3371]]
// CHECK-NEXT:    store i64 [[TMP3373]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3374:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3375:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3374]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3376:%.*]] = icmp ult i64 [[TMP3375]], [[TMP3374]]
// CHECK-NEXT:    [[TMP3377:%.*]] = select i1 [[TMP3376]], i64 [[TMP3374]], i64 [[TMP3375]]
// CHECK-NEXT:    store i64 [[TMP3377]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3378:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3379:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3378]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3380:%.*]] = icmp ult i64 [[TMP3379]], [[TMP3378]]
// CHECK-NEXT:    [[TMP3381:%.*]] = select i1 [[TMP3380]], i64 [[TMP3378]], i64 [[TMP3379]]
// CHECK-NEXT:    store i64 [[TMP3381]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3382:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3383:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3382]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3384:%.*]] = icmp ugt i64 [[TMP3383]], [[TMP3382]]
// CHECK-NEXT:    [[TMP3385:%.*]] = select i1 [[TMP3384]], i64 [[TMP3382]], i64 [[TMP3383]]
// CHECK-NEXT:    store i64 [[TMP3385]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3386:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3387:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3388:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3386]], i64 [[TMP3387]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3389:%.*]] = extractvalue { i64, i1 } [[TMP3388]], 0
// CHECK-NEXT:    [[TMP3390:%.*]] = extractvalue { i64, i1 } [[TMP3388]], 1
// CHECK-NEXT:    [[TMP3391:%.*]] = select i1 [[TMP3390]], i64 [[TMP3386]], i64 [[TMP3389]]
// CHECK-NEXT:    store i64 [[TMP3391]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3392:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3393:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3394:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3392]], i64 [[TMP3393]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3395:%.*]] = extractvalue { i64, i1 } [[TMP3394]], 0
// CHECK-NEXT:    [[TMP3396:%.*]] = extractvalue { i64, i1 } [[TMP3394]], 1
// CHECK-NEXT:    [[TMP3397:%.*]] = select i1 [[TMP3396]], i64 [[TMP3392]], i64 [[TMP3395]]
// CHECK-NEXT:    store i64 [[TMP3397]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3398:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3399:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3400:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3398]], i64 [[TMP3399]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3401:%.*]] = extractvalue { i64, i1 } [[TMP3400]], 0
// CHECK-NEXT:    [[TMP3402:%.*]] = extractvalue { i64, i1 } [[TMP3400]], 1
// CHECK-NEXT:    br i1 [[TMP3402]], label [[ULX_ATOMIC_EXIT329:%.*]], label [[ULX_ATOMIC_CONT330:%.*]]
// CHECK:       ulx.atomic.cont330:
// CHECK-NEXT:    store i64 [[TMP3401]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT329]]
// CHECK:       ulx.atomic.exit329:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3403:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3404:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3405:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3403]], i64 [[TMP3404]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3406:%.*]] = extractvalue { i64, i1 } [[TMP3405]], 0
// CHECK-NEXT:    [[TMP3407:%.*]] = extractvalue { i64, i1 } [[TMP3405]], 1
// CHECK-NEXT:    br i1 [[TMP3407]], label [[ULX_ATOMIC_EXIT331:%.*]], label [[ULX_ATOMIC_CONT332:%.*]]
// CHECK:       ulx.atomic.cont332:
// CHECK-NEXT:    store i64 [[TMP3406]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT331]]
// CHECK:       ulx.atomic.exit331:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3408:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3409:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3410:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3408]], i64 [[TMP3409]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3411:%.*]] = extractvalue { i64, i1 } [[TMP3410]], 1
// CHECK-NEXT:    [[TMP3412:%.*]] = zext i1 [[TMP3411]] to i64
// CHECK-NEXT:    store i64 [[TMP3412]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3413:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3414:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3415:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3413]], i64 [[TMP3414]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3416:%.*]] = extractvalue { i64, i1 } [[TMP3415]], 1
// CHECK-NEXT:    [[TMP3417:%.*]] = zext i1 [[TMP3416]] to i64
// CHECK-NEXT:    store i64 [[TMP3417]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3418:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3419:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3420:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3418]], i64 [[TMP3419]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3421:%.*]] = extractvalue { i64, i1 } [[TMP3420]], 0
// CHECK-NEXT:    [[TMP3422:%.*]] = extractvalue { i64, i1 } [[TMP3420]], 1
// CHECK-NEXT:    br i1 [[TMP3422]], label [[ULX_ATOMIC_EXIT333:%.*]], label [[ULX_ATOMIC_CONT334:%.*]]
// CHECK:       ulx.atomic.cont334:
// CHECK-NEXT:    store i64 [[TMP3421]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT333]]
// CHECK:       ulx.atomic.exit333:
// CHECK-NEXT:    [[TMP3423:%.*]] = extractvalue { i64, i1 } [[TMP3420]], 1
// CHECK-NEXT:    [[TMP3424:%.*]] = zext i1 [[TMP3423]] to i64
// CHECK-NEXT:    store i64 [[TMP3424]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3425:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3426:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3427:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3425]], i64 [[TMP3426]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3428:%.*]] = extractvalue { i64, i1 } [[TMP3427]], 0
// CHECK-NEXT:    [[TMP3429:%.*]] = extractvalue { i64, i1 } [[TMP3427]], 1
// CHECK-NEXT:    br i1 [[TMP3429]], label [[ULX_ATOMIC_EXIT335:%.*]], label [[ULX_ATOMIC_CONT336:%.*]]
// CHECK:       ulx.atomic.cont336:
// CHECK-NEXT:    store i64 [[TMP3428]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT335]]
// CHECK:       ulx.atomic.exit335:
// CHECK-NEXT:    [[TMP3430:%.*]] = extractvalue { i64, i1 } [[TMP3427]], 1
// CHECK-NEXT:    [[TMP3431:%.*]] = zext i1 [[TMP3430]] to i64
// CHECK-NEXT:    store i64 [[TMP3431]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3432:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3433:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3432]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3433]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3434:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3435:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3434]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3435]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3436:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3437:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3436]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3437]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3438:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3439:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3438]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3439]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3440:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3441:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3442:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3440]], i64 [[TMP3441]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3443:%.*]] = extractvalue { i64, i1 } [[TMP3442]], 0
// CHECK-NEXT:    store i64 [[TMP3443]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3444:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3445:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3446:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3444]], i64 [[TMP3445]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3447:%.*]] = extractvalue { i64, i1 } [[TMP3446]], 0
// CHECK-NEXT:    store i64 [[TMP3447]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3448:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3449:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3448]] acquire, align 8
// CHECK-NEXT:    [[TMP3450:%.*]] = icmp ugt i64 [[TMP3449]], [[TMP3448]]
// CHECK-NEXT:    [[TMP3451:%.*]] = select i1 [[TMP3450]], i64 [[TMP3448]], i64 [[TMP3449]]
// CHECK-NEXT:    store i64 [[TMP3451]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3452:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3453:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3452]] acquire, align 8
// CHECK-NEXT:    [[TMP3454:%.*]] = icmp ult i64 [[TMP3453]], [[TMP3452]]
// CHECK-NEXT:    [[TMP3455:%.*]] = select i1 [[TMP3454]], i64 [[TMP3452]], i64 [[TMP3453]]
// CHECK-NEXT:    store i64 [[TMP3455]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3456:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3457:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3456]] acquire, align 8
// CHECK-NEXT:    [[TMP3458:%.*]] = icmp ult i64 [[TMP3457]], [[TMP3456]]
// CHECK-NEXT:    [[TMP3459:%.*]] = select i1 [[TMP3458]], i64 [[TMP3456]], i64 [[TMP3457]]
// CHECK-NEXT:    store i64 [[TMP3459]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3460:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3461:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3460]] acquire, align 8
// CHECK-NEXT:    [[TMP3462:%.*]] = icmp ugt i64 [[TMP3461]], [[TMP3460]]
// CHECK-NEXT:    [[TMP3463:%.*]] = select i1 [[TMP3462]], i64 [[TMP3460]], i64 [[TMP3461]]
// CHECK-NEXT:    store i64 [[TMP3463]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3464:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3465:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3466:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3464]], i64 [[TMP3465]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3467:%.*]] = extractvalue { i64, i1 } [[TMP3466]], 0
// CHECK-NEXT:    [[TMP3468:%.*]] = extractvalue { i64, i1 } [[TMP3466]], 1
// CHECK-NEXT:    [[TMP3469:%.*]] = select i1 [[TMP3468]], i64 [[TMP3464]], i64 [[TMP3467]]
// CHECK-NEXT:    store i64 [[TMP3469]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3470:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3471:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3472:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3470]], i64 [[TMP3471]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3473:%.*]] = extractvalue { i64, i1 } [[TMP3472]], 0
// CHECK-NEXT:    [[TMP3474:%.*]] = extractvalue { i64, i1 } [[TMP3472]], 1
// CHECK-NEXT:    [[TMP3475:%.*]] = select i1 [[TMP3474]], i64 [[TMP3470]], i64 [[TMP3473]]
// CHECK-NEXT:    store i64 [[TMP3475]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3476:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3477:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3478:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3476]], i64 [[TMP3477]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3479:%.*]] = extractvalue { i64, i1 } [[TMP3478]], 0
// CHECK-NEXT:    [[TMP3480:%.*]] = extractvalue { i64, i1 } [[TMP3478]], 1
// CHECK-NEXT:    br i1 [[TMP3480]], label [[ULX_ATOMIC_EXIT337:%.*]], label [[ULX_ATOMIC_CONT338:%.*]]
// CHECK:       ulx.atomic.cont338:
// CHECK-NEXT:    store i64 [[TMP3479]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT337]]
// CHECK:       ulx.atomic.exit337:
// CHECK-NEXT:    [[TMP3481:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3482:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3483:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3481]], i64 [[TMP3482]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3484:%.*]] = extractvalue { i64, i1 } [[TMP3483]], 0
// CHECK-NEXT:    [[TMP3485:%.*]] = extractvalue { i64, i1 } [[TMP3483]], 1
// CHECK-NEXT:    br i1 [[TMP3485]], label [[ULX_ATOMIC_EXIT339:%.*]], label [[ULX_ATOMIC_CONT340:%.*]]
// CHECK:       ulx.atomic.cont340:
// CHECK-NEXT:    store i64 [[TMP3484]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT339]]
// CHECK:       ulx.atomic.exit339:
// CHECK-NEXT:    [[TMP3486:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3487:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3488:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3486]], i64 [[TMP3487]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3489:%.*]] = extractvalue { i64, i1 } [[TMP3488]], 1
// CHECK-NEXT:    [[TMP3490:%.*]] = zext i1 [[TMP3489]] to i64
// CHECK-NEXT:    store i64 [[TMP3490]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3491:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3492:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3493:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3491]], i64 [[TMP3492]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3494:%.*]] = extractvalue { i64, i1 } [[TMP3493]], 1
// CHECK-NEXT:    [[TMP3495:%.*]] = zext i1 [[TMP3494]] to i64
// CHECK-NEXT:    store i64 [[TMP3495]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3496:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3497:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3498:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3496]], i64 [[TMP3497]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3499:%.*]] = extractvalue { i64, i1 } [[TMP3498]], 0
// CHECK-NEXT:    [[TMP3500:%.*]] = extractvalue { i64, i1 } [[TMP3498]], 1
// CHECK-NEXT:    br i1 [[TMP3500]], label [[ULX_ATOMIC_EXIT341:%.*]], label [[ULX_ATOMIC_CONT342:%.*]]
// CHECK:       ulx.atomic.cont342:
// CHECK-NEXT:    store i64 [[TMP3499]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT341]]
// CHECK:       ulx.atomic.exit341:
// CHECK-NEXT:    [[TMP3501:%.*]] = extractvalue { i64, i1 } [[TMP3498]], 1
// CHECK-NEXT:    [[TMP3502:%.*]] = zext i1 [[TMP3501]] to i64
// CHECK-NEXT:    store i64 [[TMP3502]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3503:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3504:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3505:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3503]], i64 [[TMP3504]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3506:%.*]] = extractvalue { i64, i1 } [[TMP3505]], 0
// CHECK-NEXT:    [[TMP3507:%.*]] = extractvalue { i64, i1 } [[TMP3505]], 1
// CHECK-NEXT:    br i1 [[TMP3507]], label [[ULX_ATOMIC_EXIT343:%.*]], label [[ULX_ATOMIC_CONT344:%.*]]
// CHECK:       ulx.atomic.cont344:
// CHECK-NEXT:    store i64 [[TMP3506]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT343]]
// CHECK:       ulx.atomic.exit343:
// CHECK-NEXT:    [[TMP3508:%.*]] = extractvalue { i64, i1 } [[TMP3505]], 1
// CHECK-NEXT:    [[TMP3509:%.*]] = zext i1 [[TMP3508]] to i64
// CHECK-NEXT:    store i64 [[TMP3509]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3510:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3511:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3510]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3511]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3512:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3513:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3512]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3513]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3514:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3515:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3514]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3515]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3516:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3517:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3516]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3517]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3518:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3519:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3520:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3518]], i64 [[TMP3519]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3521:%.*]] = extractvalue { i64, i1 } [[TMP3520]], 0
// CHECK-NEXT:    store i64 [[TMP3521]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3522:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3523:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3524:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3522]], i64 [[TMP3523]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3525:%.*]] = extractvalue { i64, i1 } [[TMP3524]], 0
// CHECK-NEXT:    store i64 [[TMP3525]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3526:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3527:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3526]] monotonic, align 8
// CHECK-NEXT:    [[TMP3528:%.*]] = icmp ugt i64 [[TMP3527]], [[TMP3526]]
// CHECK-NEXT:    [[TMP3529:%.*]] = select i1 [[TMP3528]], i64 [[TMP3526]], i64 [[TMP3527]]
// CHECK-NEXT:    store i64 [[TMP3529]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3530:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3531:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3530]] monotonic, align 8
// CHECK-NEXT:    [[TMP3532:%.*]] = icmp ult i64 [[TMP3531]], [[TMP3530]]
// CHECK-NEXT:    [[TMP3533:%.*]] = select i1 [[TMP3532]], i64 [[TMP3530]], i64 [[TMP3531]]
// CHECK-NEXT:    store i64 [[TMP3533]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3534:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3535:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3534]] monotonic, align 8
// CHECK-NEXT:    [[TMP3536:%.*]] = icmp ult i64 [[TMP3535]], [[TMP3534]]
// CHECK-NEXT:    [[TMP3537:%.*]] = select i1 [[TMP3536]], i64 [[TMP3534]], i64 [[TMP3535]]
// CHECK-NEXT:    store i64 [[TMP3537]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3538:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3539:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3538]] monotonic, align 8
// CHECK-NEXT:    [[TMP3540:%.*]] = icmp ugt i64 [[TMP3539]], [[TMP3538]]
// CHECK-NEXT:    [[TMP3541:%.*]] = select i1 [[TMP3540]], i64 [[TMP3538]], i64 [[TMP3539]]
// CHECK-NEXT:    store i64 [[TMP3541]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3542:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3543:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3544:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3542]], i64 [[TMP3543]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3545:%.*]] = extractvalue { i64, i1 } [[TMP3544]], 0
// CHECK-NEXT:    [[TMP3546:%.*]] = extractvalue { i64, i1 } [[TMP3544]], 1
// CHECK-NEXT:    [[TMP3547:%.*]] = select i1 [[TMP3546]], i64 [[TMP3542]], i64 [[TMP3545]]
// CHECK-NEXT:    store i64 [[TMP3547]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3548:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3549:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3550:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3548]], i64 [[TMP3549]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3551:%.*]] = extractvalue { i64, i1 } [[TMP3550]], 0
// CHECK-NEXT:    [[TMP3552:%.*]] = extractvalue { i64, i1 } [[TMP3550]], 1
// CHECK-NEXT:    [[TMP3553:%.*]] = select i1 [[TMP3552]], i64 [[TMP3548]], i64 [[TMP3551]]
// CHECK-NEXT:    store i64 [[TMP3553]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP3554:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3555:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3556:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3554]], i64 [[TMP3555]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3557:%.*]] = extractvalue { i64, i1 } [[TMP3556]], 0
// CHECK-NEXT:    [[TMP3558:%.*]] = extractvalue { i64, i1 } [[TMP3556]], 1
// CHECK-NEXT:    br i1 [[TMP3558]], label [[ULX_ATOMIC_EXIT345:%.*]], label [[ULX_ATOMIC_CONT346:%.*]]
// CHECK:       ulx.atomic.cont346:
// CHECK-NEXT:    store i64 [[TMP3557]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT345]]
// CHECK:       ulx.atomic.exit345:
// CHECK-NEXT:    [[TMP3559:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3560:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3561:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3559]], i64 [[TMP3560]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3562:%.*]] = extractvalue { i64, i1 } [[TMP3561]], 0
// CHECK-NEXT:    [[TMP3563:%.*]] = extractvalue { i64, i1 } [[TMP3561]], 1
// CHECK-NEXT:    br i1 [[TMP3563]], label [[ULX_ATOMIC_EXIT347:%.*]], label [[ULX_ATOMIC_CONT348:%.*]]
// CHECK:       ulx.atomic.cont348:
// CHECK-NEXT:    store i64 [[TMP3562]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT347]]
// CHECK:       ulx.atomic.exit347:
// CHECK-NEXT:    [[TMP3564:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3565:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3566:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3564]], i64 [[TMP3565]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3567:%.*]] = extractvalue { i64, i1 } [[TMP3566]], 1
// CHECK-NEXT:    [[TMP3568:%.*]] = zext i1 [[TMP3567]] to i64
// CHECK-NEXT:    store i64 [[TMP3568]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3569:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3570:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3571:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3569]], i64 [[TMP3570]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3572:%.*]] = extractvalue { i64, i1 } [[TMP3571]], 1
// CHECK-NEXT:    [[TMP3573:%.*]] = zext i1 [[TMP3572]] to i64
// CHECK-NEXT:    store i64 [[TMP3573]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3574:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3575:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3576:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3574]], i64 [[TMP3575]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3577:%.*]] = extractvalue { i64, i1 } [[TMP3576]], 0
// CHECK-NEXT:    [[TMP3578:%.*]] = extractvalue { i64, i1 } [[TMP3576]], 1
// CHECK-NEXT:    br i1 [[TMP3578]], label [[ULX_ATOMIC_EXIT349:%.*]], label [[ULX_ATOMIC_CONT350:%.*]]
// CHECK:       ulx.atomic.cont350:
// CHECK-NEXT:    store i64 [[TMP3577]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT349]]
// CHECK:       ulx.atomic.exit349:
// CHECK-NEXT:    [[TMP3579:%.*]] = extractvalue { i64, i1 } [[TMP3576]], 1
// CHECK-NEXT:    [[TMP3580:%.*]] = zext i1 [[TMP3579]] to i64
// CHECK-NEXT:    store i64 [[TMP3580]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3581:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3582:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3583:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3581]], i64 [[TMP3582]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3584:%.*]] = extractvalue { i64, i1 } [[TMP3583]], 0
// CHECK-NEXT:    [[TMP3585:%.*]] = extractvalue { i64, i1 } [[TMP3583]], 1
// CHECK-NEXT:    br i1 [[TMP3585]], label [[ULX_ATOMIC_EXIT351:%.*]], label [[ULX_ATOMIC_CONT352:%.*]]
// CHECK:       ulx.atomic.cont352:
// CHECK-NEXT:    store i64 [[TMP3584]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT351]]
// CHECK:       ulx.atomic.exit351:
// CHECK-NEXT:    [[TMP3586:%.*]] = extractvalue { i64, i1 } [[TMP3583]], 1
// CHECK-NEXT:    [[TMP3587:%.*]] = zext i1 [[TMP3586]] to i64
// CHECK-NEXT:    store i64 [[TMP3587]], ptr [[ULR]], align 8
// CHECK-NEXT:    [[TMP3588:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3589:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3588]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3589]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3590:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3591:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3590]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3591]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3592:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3593:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3592]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3593]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3594:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3595:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3594]] release, align 8
// CHECK-NEXT:    store i64 [[TMP3595]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3596:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3597:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3598:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3596]], i64 [[TMP3597]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3599:%.*]] = extractvalue { i64, i1 } [[TMP3598]], 0
// CHECK-NEXT:    store i64 [[TMP3599]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3600:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3601:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3602:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3600]], i64 [[TMP3601]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3603:%.*]] = extractvalue { i64, i1 } [[TMP3602]], 0
// CHECK-NEXT:    store i64 [[TMP3603]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3604:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3605:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3604]] release, align 8
// CHECK-NEXT:    [[TMP3606:%.*]] = icmp ugt i64 [[TMP3605]], [[TMP3604]]
// CHECK-NEXT:    [[TMP3607:%.*]] = select i1 [[TMP3606]], i64 [[TMP3604]], i64 [[TMP3605]]
// CHECK-NEXT:    store i64 [[TMP3607]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3608:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3609:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3608]] release, align 8
// CHECK-NEXT:    [[TMP3610:%.*]] = icmp ult i64 [[TMP3609]], [[TMP3608]]
// CHECK-NEXT:    [[TMP3611:%.*]] = select i1 [[TMP3610]], i64 [[TMP3608]], i64 [[TMP3609]]
// CHECK-NEXT:    store i64 [[TMP3611]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3612:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3613:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3612]] release, align 8
// CHECK-NEXT:    [[TMP3614:%.*]] = icmp ult i64 [[TMP3613]], [[TMP3612]]
// CHECK-NEXT:    [[TMP3615:%.*]] = select i1 [[TMP3614]], i64 [[TMP3612]], i64 [[TMP3613]]
// CHECK-NEXT:    store i64 [[TMP3615]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3616:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3617:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3616]] release, align 8
// CHECK-NEXT:    [[TMP3618:%.*]] = icmp ugt i64 [[TMP3617]], [[TMP3616]]
// CHECK-NEXT:    [[TMP3619:%.*]] = select i1 [[TMP3618]], i64 [[TMP3616]], i64 [[TMP3617]]
// CHECK-NEXT:    store i64 [[TMP3619]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3620:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3621:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3622:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3620]], i64 [[TMP3621]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3623:%.*]] = extractvalue { i64, i1 } [[TMP3622]], 0
// CHECK-NEXT:    [[TMP3624:%.*]] = extractvalue { i64, i1 } [[TMP3622]], 1
// CHECK-NEXT:    [[TMP3625:%.*]] = select i1 [[TMP3624]], i64 [[TMP3620]], i64 [[TMP3623]]
// CHECK-NEXT:    store i64 [[TMP3625]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3626:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3627:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3628:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3626]], i64 [[TMP3627]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3629:%.*]] = extractvalue { i64, i1 } [[TMP3628]], 0
// CHECK-NEXT:    [[TMP3630:%.*]] = extractvalue { i64, i1 } [[TMP3628]], 1
// CHECK-NEXT:    [[TMP3631:%.*]] = select i1 [[TMP3630]], i64 [[TMP3626]], i64 [[TMP3629]]
// CHECK-NEXT:    store i64 [[TMP3631]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3632:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3633:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3634:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3632]], i64 [[TMP3633]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3635:%.*]] = extractvalue { i64, i1 } [[TMP3634]], 0
// CHECK-NEXT:    [[TMP3636:%.*]] = extractvalue { i64, i1 } [[TMP3634]], 1
// CHECK-NEXT:    br i1 [[TMP3636]], label [[ULX_ATOMIC_EXIT353:%.*]], label [[ULX_ATOMIC_CONT354:%.*]]
// CHECK:       ulx.atomic.cont354:
// CHECK-NEXT:    store i64 [[TMP3635]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT353]]
// CHECK:       ulx.atomic.exit353:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3637:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3638:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3639:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3637]], i64 [[TMP3638]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3640:%.*]] = extractvalue { i64, i1 } [[TMP3639]], 0
// CHECK-NEXT:    [[TMP3641:%.*]] = extractvalue { i64, i1 } [[TMP3639]], 1
// CHECK-NEXT:    br i1 [[TMP3641]], label [[ULX_ATOMIC_EXIT355:%.*]], label [[ULX_ATOMIC_CONT356:%.*]]
// CHECK:       ulx.atomic.cont356:
// CHECK-NEXT:    store i64 [[TMP3640]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT355]]
// CHECK:       ulx.atomic.exit355:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3642:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3643:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3644:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3642]], i64 [[TMP3643]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3645:%.*]] = extractvalue { i64, i1 } [[TMP3644]], 1
// CHECK-NEXT:    [[TMP3646:%.*]] = zext i1 [[TMP3645]] to i64
// CHECK-NEXT:    store i64 [[TMP3646]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3647:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3648:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3649:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3647]], i64 [[TMP3648]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3650:%.*]] = extractvalue { i64, i1 } [[TMP3649]], 1
// CHECK-NEXT:    [[TMP3651:%.*]] = zext i1 [[TMP3650]] to i64
// CHECK-NEXT:    store i64 [[TMP3651]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3652:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3653:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3654:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3652]], i64 [[TMP3653]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3655:%.*]] = extractvalue { i64, i1 } [[TMP3654]], 0
// CHECK-NEXT:    [[TMP3656:%.*]] = extractvalue { i64, i1 } [[TMP3654]], 1
// CHECK-NEXT:    br i1 [[TMP3656]], label [[ULX_ATOMIC_EXIT357:%.*]], label [[ULX_ATOMIC_CONT358:%.*]]
// CHECK:       ulx.atomic.cont358:
// CHECK-NEXT:    store i64 [[TMP3655]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT357]]
// CHECK:       ulx.atomic.exit357:
// CHECK-NEXT:    [[TMP3657:%.*]] = extractvalue { i64, i1 } [[TMP3654]], 1
// CHECK-NEXT:    [[TMP3658:%.*]] = zext i1 [[TMP3657]] to i64
// CHECK-NEXT:    store i64 [[TMP3658]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3659:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3660:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3661:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3659]], i64 [[TMP3660]] release monotonic, align 8
// CHECK-NEXT:    [[TMP3662:%.*]] = extractvalue { i64, i1 } [[TMP3661]], 0
// CHECK-NEXT:    [[TMP3663:%.*]] = extractvalue { i64, i1 } [[TMP3661]], 1
// CHECK-NEXT:    br i1 [[TMP3663]], label [[ULX_ATOMIC_EXIT359:%.*]], label [[ULX_ATOMIC_CONT360:%.*]]
// CHECK:       ulx.atomic.cont360:
// CHECK-NEXT:    store i64 [[TMP3662]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT359]]
// CHECK:       ulx.atomic.exit359:
// CHECK-NEXT:    [[TMP3664:%.*]] = extractvalue { i64, i1 } [[TMP3661]], 1
// CHECK-NEXT:    [[TMP3665:%.*]] = zext i1 [[TMP3664]] to i64
// CHECK-NEXT:    store i64 [[TMP3665]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3666:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3667:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3666]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3667]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3668:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3669:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3668]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3669]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3670:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3671:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3670]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3671]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3672:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3673:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3672]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP3673]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3674:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3675:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3676:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3674]], i64 [[TMP3675]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3677:%.*]] = extractvalue { i64, i1 } [[TMP3676]], 0
// CHECK-NEXT:    store i64 [[TMP3677]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3678:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3679:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3680:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3678]], i64 [[TMP3679]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3681:%.*]] = extractvalue { i64, i1 } [[TMP3680]], 0
// CHECK-NEXT:    store i64 [[TMP3681]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3682:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3683:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3682]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3684:%.*]] = icmp ugt i64 [[TMP3683]], [[TMP3682]]
// CHECK-NEXT:    [[TMP3685:%.*]] = select i1 [[TMP3684]], i64 [[TMP3682]], i64 [[TMP3683]]
// CHECK-NEXT:    store i64 [[TMP3685]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3686:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3687:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3686]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3688:%.*]] = icmp ult i64 [[TMP3687]], [[TMP3686]]
// CHECK-NEXT:    [[TMP3689:%.*]] = select i1 [[TMP3688]], i64 [[TMP3686]], i64 [[TMP3687]]
// CHECK-NEXT:    store i64 [[TMP3689]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3690:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3691:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP3690]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3692:%.*]] = icmp ult i64 [[TMP3691]], [[TMP3690]]
// CHECK-NEXT:    [[TMP3693:%.*]] = select i1 [[TMP3692]], i64 [[TMP3690]], i64 [[TMP3691]]
// CHECK-NEXT:    store i64 [[TMP3693]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3694:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3695:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP3694]] seq_cst, align 8
// CHECK-NEXT:    [[TMP3696:%.*]] = icmp ugt i64 [[TMP3695]], [[TMP3694]]
// CHECK-NEXT:    [[TMP3697:%.*]] = select i1 [[TMP3696]], i64 [[TMP3694]], i64 [[TMP3695]]
// CHECK-NEXT:    store i64 [[TMP3697]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3698:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3699:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3700:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3698]], i64 [[TMP3699]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3701:%.*]] = extractvalue { i64, i1 } [[TMP3700]], 0
// CHECK-NEXT:    [[TMP3702:%.*]] = extractvalue { i64, i1 } [[TMP3700]], 1
// CHECK-NEXT:    [[TMP3703:%.*]] = select i1 [[TMP3702]], i64 [[TMP3698]], i64 [[TMP3701]]
// CHECK-NEXT:    store i64 [[TMP3703]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3704:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3705:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3706:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3704]], i64 [[TMP3705]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3707:%.*]] = extractvalue { i64, i1 } [[TMP3706]], 0
// CHECK-NEXT:    [[TMP3708:%.*]] = extractvalue { i64, i1 } [[TMP3706]], 1
// CHECK-NEXT:    [[TMP3709:%.*]] = select i1 [[TMP3708]], i64 [[TMP3704]], i64 [[TMP3707]]
// CHECK-NEXT:    store i64 [[TMP3709]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3710:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3711:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3712:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3710]], i64 [[TMP3711]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3713:%.*]] = extractvalue { i64, i1 } [[TMP3712]], 0
// CHECK-NEXT:    [[TMP3714:%.*]] = extractvalue { i64, i1 } [[TMP3712]], 1
// CHECK-NEXT:    br i1 [[TMP3714]], label [[ULX_ATOMIC_EXIT361:%.*]], label [[ULX_ATOMIC_CONT362:%.*]]
// CHECK:       ulx.atomic.cont362:
// CHECK-NEXT:    store i64 [[TMP3713]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT361]]
// CHECK:       ulx.atomic.exit361:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3715:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3716:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3717:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3715]], i64 [[TMP3716]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3718:%.*]] = extractvalue { i64, i1 } [[TMP3717]], 0
// CHECK-NEXT:    [[TMP3719:%.*]] = extractvalue { i64, i1 } [[TMP3717]], 1
// CHECK-NEXT:    br i1 [[TMP3719]], label [[ULX_ATOMIC_EXIT363:%.*]], label [[ULX_ATOMIC_CONT364:%.*]]
// CHECK:       ulx.atomic.cont364:
// CHECK-NEXT:    store i64 [[TMP3718]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT363]]
// CHECK:       ulx.atomic.exit363:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3720:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3721:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3722:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3720]], i64 [[TMP3721]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3723:%.*]] = extractvalue { i64, i1 } [[TMP3722]], 1
// CHECK-NEXT:    [[TMP3724:%.*]] = zext i1 [[TMP3723]] to i64
// CHECK-NEXT:    store i64 [[TMP3724]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3725:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3726:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3727:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3725]], i64 [[TMP3726]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3728:%.*]] = extractvalue { i64, i1 } [[TMP3727]], 1
// CHECK-NEXT:    [[TMP3729:%.*]] = zext i1 [[TMP3728]] to i64
// CHECK-NEXT:    store i64 [[TMP3729]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3730:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3731:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3732:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3730]], i64 [[TMP3731]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3733:%.*]] = extractvalue { i64, i1 } [[TMP3732]], 0
// CHECK-NEXT:    [[TMP3734:%.*]] = extractvalue { i64, i1 } [[TMP3732]], 1
// CHECK-NEXT:    br i1 [[TMP3734]], label [[ULX_ATOMIC_EXIT365:%.*]], label [[ULX_ATOMIC_CONT366:%.*]]
// CHECK:       ulx.atomic.cont366:
// CHECK-NEXT:    store i64 [[TMP3733]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT365]]
// CHECK:       ulx.atomic.exit365:
// CHECK-NEXT:    [[TMP3735:%.*]] = extractvalue { i64, i1 } [[TMP3732]], 1
// CHECK-NEXT:    [[TMP3736:%.*]] = zext i1 [[TMP3735]] to i64
// CHECK-NEXT:    store i64 [[TMP3736]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3737:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3738:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP3739:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP3737]], i64 [[TMP3738]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP3740:%.*]] = extractvalue { i64, i1 } [[TMP3739]], 0
// CHECK-NEXT:    [[TMP3741:%.*]] = extractvalue { i64, i1 } [[TMP3739]], 1
// CHECK-NEXT:    br i1 [[TMP3741]], label [[ULX_ATOMIC_EXIT367:%.*]], label [[ULX_ATOMIC_CONT368:%.*]]
// CHECK:       ulx.atomic.cont368:
// CHECK-NEXT:    store i64 [[TMP3740]], ptr [[ULV]], align 8
// CHECK-NEXT:    br label [[ULX_ATOMIC_EXIT367]]
// CHECK:       ulx.atomic.exit367:
// CHECK-NEXT:    [[TMP3742:%.*]] = extractvalue { i64, i1 } [[TMP3739]], 1
// CHECK-NEXT:    [[TMP3743:%.*]] = zext i1 [[TMP3742]] to i64
// CHECK-NEXT:    store i64 [[TMP3743]], ptr [[ULR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3744:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3745:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3744]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3745]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3746:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3747:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3746]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3747]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3748:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3749:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3748]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3749]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3750:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3751:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3750]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3751]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3752:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3753:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3754:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3752]], i64 [[TMP3753]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3755:%.*]] = extractvalue { i64, i1 } [[TMP3754]], 0
// CHECK-NEXT:    store i64 [[TMP3755]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3756:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3757:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3758:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3756]], i64 [[TMP3757]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3759:%.*]] = extractvalue { i64, i1 } [[TMP3758]], 0
// CHECK-NEXT:    store i64 [[TMP3759]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3760:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3761:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3760]] monotonic, align 8
// CHECK-NEXT:    [[TMP3762:%.*]] = icmp sgt i64 [[TMP3761]], [[TMP3760]]
// CHECK-NEXT:    [[TMP3763:%.*]] = select i1 [[TMP3762]], i64 [[TMP3760]], i64 [[TMP3761]]
// CHECK-NEXT:    store i64 [[TMP3763]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3764:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3765:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3764]] monotonic, align 8
// CHECK-NEXT:    [[TMP3766:%.*]] = icmp slt i64 [[TMP3765]], [[TMP3764]]
// CHECK-NEXT:    [[TMP3767:%.*]] = select i1 [[TMP3766]], i64 [[TMP3764]], i64 [[TMP3765]]
// CHECK-NEXT:    store i64 [[TMP3767]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3768:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3769:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3768]] monotonic, align 8
// CHECK-NEXT:    [[TMP3770:%.*]] = icmp slt i64 [[TMP3769]], [[TMP3768]]
// CHECK-NEXT:    [[TMP3771:%.*]] = select i1 [[TMP3770]], i64 [[TMP3768]], i64 [[TMP3769]]
// CHECK-NEXT:    store i64 [[TMP3771]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3772:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3773:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3772]] monotonic, align 8
// CHECK-NEXT:    [[TMP3774:%.*]] = icmp sgt i64 [[TMP3773]], [[TMP3772]]
// CHECK-NEXT:    [[TMP3775:%.*]] = select i1 [[TMP3774]], i64 [[TMP3772]], i64 [[TMP3773]]
// CHECK-NEXT:    store i64 [[TMP3775]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3776:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3777:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3778:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3776]], i64 [[TMP3777]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3779:%.*]] = extractvalue { i64, i1 } [[TMP3778]], 0
// CHECK-NEXT:    [[TMP3780:%.*]] = extractvalue { i64, i1 } [[TMP3778]], 1
// CHECK-NEXT:    [[TMP3781:%.*]] = select i1 [[TMP3780]], i64 [[TMP3776]], i64 [[TMP3779]]
// CHECK-NEXT:    store i64 [[TMP3781]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3782:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3783:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3784:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3782]], i64 [[TMP3783]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3785:%.*]] = extractvalue { i64, i1 } [[TMP3784]], 0
// CHECK-NEXT:    [[TMP3786:%.*]] = extractvalue { i64, i1 } [[TMP3784]], 1
// CHECK-NEXT:    [[TMP3787:%.*]] = select i1 [[TMP3786]], i64 [[TMP3782]], i64 [[TMP3785]]
// CHECK-NEXT:    store i64 [[TMP3787]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3788:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3789:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3790:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3788]], i64 [[TMP3789]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3791:%.*]] = extractvalue { i64, i1 } [[TMP3790]], 0
// CHECK-NEXT:    [[TMP3792:%.*]] = extractvalue { i64, i1 } [[TMP3790]], 1
// CHECK-NEXT:    br i1 [[TMP3792]], label [[LLX_ATOMIC_EXIT:%.*]], label [[LLX_ATOMIC_CONT:%.*]]
// CHECK:       llx.atomic.cont:
// CHECK-NEXT:    store i64 [[TMP3791]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT]]
// CHECK:       llx.atomic.exit:
// CHECK-NEXT:    [[TMP3793:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3794:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3795:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3793]], i64 [[TMP3794]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3796:%.*]] = extractvalue { i64, i1 } [[TMP3795]], 0
// CHECK-NEXT:    [[TMP3797:%.*]] = extractvalue { i64, i1 } [[TMP3795]], 1
// CHECK-NEXT:    br i1 [[TMP3797]], label [[LLX_ATOMIC_EXIT369:%.*]], label [[LLX_ATOMIC_CONT370:%.*]]
// CHECK:       llx.atomic.cont370:
// CHECK-NEXT:    store i64 [[TMP3796]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT369]]
// CHECK:       llx.atomic.exit369:
// CHECK-NEXT:    [[TMP3798:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3799:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3800:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3798]], i64 [[TMP3799]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3801:%.*]] = extractvalue { i64, i1 } [[TMP3800]], 1
// CHECK-NEXT:    [[TMP3802:%.*]] = sext i1 [[TMP3801]] to i64
// CHECK-NEXT:    store i64 [[TMP3802]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3803:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3804:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3805:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3803]], i64 [[TMP3804]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3806:%.*]] = extractvalue { i64, i1 } [[TMP3805]], 1
// CHECK-NEXT:    [[TMP3807:%.*]] = sext i1 [[TMP3806]] to i64
// CHECK-NEXT:    store i64 [[TMP3807]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3808:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3809:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3810:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3808]], i64 [[TMP3809]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3811:%.*]] = extractvalue { i64, i1 } [[TMP3810]], 0
// CHECK-NEXT:    [[TMP3812:%.*]] = extractvalue { i64, i1 } [[TMP3810]], 1
// CHECK-NEXT:    br i1 [[TMP3812]], label [[LLX_ATOMIC_EXIT371:%.*]], label [[LLX_ATOMIC_CONT372:%.*]]
// CHECK:       llx.atomic.cont372:
// CHECK-NEXT:    store i64 [[TMP3811]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT371]]
// CHECK:       llx.atomic.exit371:
// CHECK-NEXT:    [[TMP3813:%.*]] = extractvalue { i64, i1 } [[TMP3810]], 1
// CHECK-NEXT:    [[TMP3814:%.*]] = sext i1 [[TMP3813]] to i64
// CHECK-NEXT:    store i64 [[TMP3814]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3815:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3816:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3817:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3815]], i64 [[TMP3816]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3818:%.*]] = extractvalue { i64, i1 } [[TMP3817]], 0
// CHECK-NEXT:    [[TMP3819:%.*]] = extractvalue { i64, i1 } [[TMP3817]], 1
// CHECK-NEXT:    br i1 [[TMP3819]], label [[LLX_ATOMIC_EXIT373:%.*]], label [[LLX_ATOMIC_CONT374:%.*]]
// CHECK:       llx.atomic.cont374:
// CHECK-NEXT:    store i64 [[TMP3818]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT373]]
// CHECK:       llx.atomic.exit373:
// CHECK-NEXT:    [[TMP3820:%.*]] = extractvalue { i64, i1 } [[TMP3817]], 1
// CHECK-NEXT:    [[TMP3821:%.*]] = sext i1 [[TMP3820]] to i64
// CHECK-NEXT:    store i64 [[TMP3821]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3822:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3823:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3822]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3823]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3824:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3825:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3824]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3825]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3826:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3827:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3826]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3827]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3828:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3829:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3828]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP3829]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3830:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3831:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3832:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3830]], i64 [[TMP3831]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3833:%.*]] = extractvalue { i64, i1 } [[TMP3832]], 0
// CHECK-NEXT:    store i64 [[TMP3833]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3834:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3835:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3836:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3834]], i64 [[TMP3835]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3837:%.*]] = extractvalue { i64, i1 } [[TMP3836]], 0
// CHECK-NEXT:    store i64 [[TMP3837]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3838:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3839:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3838]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3840:%.*]] = icmp sgt i64 [[TMP3839]], [[TMP3838]]
// CHECK-NEXT:    [[TMP3841:%.*]] = select i1 [[TMP3840]], i64 [[TMP3838]], i64 [[TMP3839]]
// CHECK-NEXT:    store i64 [[TMP3841]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3842:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3843:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3842]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3844:%.*]] = icmp slt i64 [[TMP3843]], [[TMP3842]]
// CHECK-NEXT:    [[TMP3845:%.*]] = select i1 [[TMP3844]], i64 [[TMP3842]], i64 [[TMP3843]]
// CHECK-NEXT:    store i64 [[TMP3845]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3846:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3847:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3846]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3848:%.*]] = icmp slt i64 [[TMP3847]], [[TMP3846]]
// CHECK-NEXT:    [[TMP3849:%.*]] = select i1 [[TMP3848]], i64 [[TMP3846]], i64 [[TMP3847]]
// CHECK-NEXT:    store i64 [[TMP3849]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3850:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3851:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3850]] acq_rel, align 8
// CHECK-NEXT:    [[TMP3852:%.*]] = icmp sgt i64 [[TMP3851]], [[TMP3850]]
// CHECK-NEXT:    [[TMP3853:%.*]] = select i1 [[TMP3852]], i64 [[TMP3850]], i64 [[TMP3851]]
// CHECK-NEXT:    store i64 [[TMP3853]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3854:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3855:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3856:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3854]], i64 [[TMP3855]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3857:%.*]] = extractvalue { i64, i1 } [[TMP3856]], 0
// CHECK-NEXT:    [[TMP3858:%.*]] = extractvalue { i64, i1 } [[TMP3856]], 1
// CHECK-NEXT:    [[TMP3859:%.*]] = select i1 [[TMP3858]], i64 [[TMP3854]], i64 [[TMP3857]]
// CHECK-NEXT:    store i64 [[TMP3859]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3860:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3861:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3862:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3860]], i64 [[TMP3861]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3863:%.*]] = extractvalue { i64, i1 } [[TMP3862]], 0
// CHECK-NEXT:    [[TMP3864:%.*]] = extractvalue { i64, i1 } [[TMP3862]], 1
// CHECK-NEXT:    [[TMP3865:%.*]] = select i1 [[TMP3864]], i64 [[TMP3860]], i64 [[TMP3863]]
// CHECK-NEXT:    store i64 [[TMP3865]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3866:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3867:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3868:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3866]], i64 [[TMP3867]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3869:%.*]] = extractvalue { i64, i1 } [[TMP3868]], 0
// CHECK-NEXT:    [[TMP3870:%.*]] = extractvalue { i64, i1 } [[TMP3868]], 1
// CHECK-NEXT:    br i1 [[TMP3870]], label [[LLX_ATOMIC_EXIT375:%.*]], label [[LLX_ATOMIC_CONT376:%.*]]
// CHECK:       llx.atomic.cont376:
// CHECK-NEXT:    store i64 [[TMP3869]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT375]]
// CHECK:       llx.atomic.exit375:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3871:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3872:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3873:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3871]], i64 [[TMP3872]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3874:%.*]] = extractvalue { i64, i1 } [[TMP3873]], 0
// CHECK-NEXT:    [[TMP3875:%.*]] = extractvalue { i64, i1 } [[TMP3873]], 1
// CHECK-NEXT:    br i1 [[TMP3875]], label [[LLX_ATOMIC_EXIT377:%.*]], label [[LLX_ATOMIC_CONT378:%.*]]
// CHECK:       llx.atomic.cont378:
// CHECK-NEXT:    store i64 [[TMP3874]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT377]]
// CHECK:       llx.atomic.exit377:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3876:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3877:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3878:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3876]], i64 [[TMP3877]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3879:%.*]] = extractvalue { i64, i1 } [[TMP3878]], 1
// CHECK-NEXT:    [[TMP3880:%.*]] = sext i1 [[TMP3879]] to i64
// CHECK-NEXT:    store i64 [[TMP3880]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3881:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3882:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3883:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3881]], i64 [[TMP3882]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3884:%.*]] = extractvalue { i64, i1 } [[TMP3883]], 1
// CHECK-NEXT:    [[TMP3885:%.*]] = sext i1 [[TMP3884]] to i64
// CHECK-NEXT:    store i64 [[TMP3885]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3886:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3887:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3888:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3886]], i64 [[TMP3887]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3889:%.*]] = extractvalue { i64, i1 } [[TMP3888]], 0
// CHECK-NEXT:    [[TMP3890:%.*]] = extractvalue { i64, i1 } [[TMP3888]], 1
// CHECK-NEXT:    br i1 [[TMP3890]], label [[LLX_ATOMIC_EXIT379:%.*]], label [[LLX_ATOMIC_CONT380:%.*]]
// CHECK:       llx.atomic.cont380:
// CHECK-NEXT:    store i64 [[TMP3889]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT379]]
// CHECK:       llx.atomic.exit379:
// CHECK-NEXT:    [[TMP3891:%.*]] = extractvalue { i64, i1 } [[TMP3888]], 1
// CHECK-NEXT:    [[TMP3892:%.*]] = sext i1 [[TMP3891]] to i64
// CHECK-NEXT:    store i64 [[TMP3892]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3893:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3894:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3895:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3893]], i64 [[TMP3894]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP3896:%.*]] = extractvalue { i64, i1 } [[TMP3895]], 0
// CHECK-NEXT:    [[TMP3897:%.*]] = extractvalue { i64, i1 } [[TMP3895]], 1
// CHECK-NEXT:    br i1 [[TMP3897]], label [[LLX_ATOMIC_EXIT381:%.*]], label [[LLX_ATOMIC_CONT382:%.*]]
// CHECK:       llx.atomic.cont382:
// CHECK-NEXT:    store i64 [[TMP3896]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT381]]
// CHECK:       llx.atomic.exit381:
// CHECK-NEXT:    [[TMP3898:%.*]] = extractvalue { i64, i1 } [[TMP3895]], 1
// CHECK-NEXT:    [[TMP3899:%.*]] = sext i1 [[TMP3898]] to i64
// CHECK-NEXT:    store i64 [[TMP3899]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP3900:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3901:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3900]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3901]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3902:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3903:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3902]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3903]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3904:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3905:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3904]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3905]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3906:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3907:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3906]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP3907]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3908:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3909:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3910:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3908]], i64 [[TMP3909]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3911:%.*]] = extractvalue { i64, i1 } [[TMP3910]], 0
// CHECK-NEXT:    store i64 [[TMP3911]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3912:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3913:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3914:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3912]], i64 [[TMP3913]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3915:%.*]] = extractvalue { i64, i1 } [[TMP3914]], 0
// CHECK-NEXT:    store i64 [[TMP3915]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3916:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3917:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3916]] acquire, align 8
// CHECK-NEXT:    [[TMP3918:%.*]] = icmp sgt i64 [[TMP3917]], [[TMP3916]]
// CHECK-NEXT:    [[TMP3919:%.*]] = select i1 [[TMP3918]], i64 [[TMP3916]], i64 [[TMP3917]]
// CHECK-NEXT:    store i64 [[TMP3919]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3920:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3921:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3920]] acquire, align 8
// CHECK-NEXT:    [[TMP3922:%.*]] = icmp slt i64 [[TMP3921]], [[TMP3920]]
// CHECK-NEXT:    [[TMP3923:%.*]] = select i1 [[TMP3922]], i64 [[TMP3920]], i64 [[TMP3921]]
// CHECK-NEXT:    store i64 [[TMP3923]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3924:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3925:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3924]] acquire, align 8
// CHECK-NEXT:    [[TMP3926:%.*]] = icmp slt i64 [[TMP3925]], [[TMP3924]]
// CHECK-NEXT:    [[TMP3927:%.*]] = select i1 [[TMP3926]], i64 [[TMP3924]], i64 [[TMP3925]]
// CHECK-NEXT:    store i64 [[TMP3927]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3928:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3929:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3928]] acquire, align 8
// CHECK-NEXT:    [[TMP3930:%.*]] = icmp sgt i64 [[TMP3929]], [[TMP3928]]
// CHECK-NEXT:    [[TMP3931:%.*]] = select i1 [[TMP3930]], i64 [[TMP3928]], i64 [[TMP3929]]
// CHECK-NEXT:    store i64 [[TMP3931]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3932:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3933:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3934:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3932]], i64 [[TMP3933]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3935:%.*]] = extractvalue { i64, i1 } [[TMP3934]], 0
// CHECK-NEXT:    [[TMP3936:%.*]] = extractvalue { i64, i1 } [[TMP3934]], 1
// CHECK-NEXT:    [[TMP3937:%.*]] = select i1 [[TMP3936]], i64 [[TMP3932]], i64 [[TMP3935]]
// CHECK-NEXT:    store i64 [[TMP3937]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3938:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3939:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3940:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3938]], i64 [[TMP3939]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3941:%.*]] = extractvalue { i64, i1 } [[TMP3940]], 0
// CHECK-NEXT:    [[TMP3942:%.*]] = extractvalue { i64, i1 } [[TMP3940]], 1
// CHECK-NEXT:    [[TMP3943:%.*]] = select i1 [[TMP3942]], i64 [[TMP3938]], i64 [[TMP3941]]
// CHECK-NEXT:    store i64 [[TMP3943]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3944:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3945:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3946:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3944]], i64 [[TMP3945]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3947:%.*]] = extractvalue { i64, i1 } [[TMP3946]], 0
// CHECK-NEXT:    [[TMP3948:%.*]] = extractvalue { i64, i1 } [[TMP3946]], 1
// CHECK-NEXT:    br i1 [[TMP3948]], label [[LLX_ATOMIC_EXIT383:%.*]], label [[LLX_ATOMIC_CONT384:%.*]]
// CHECK:       llx.atomic.cont384:
// CHECK-NEXT:    store i64 [[TMP3947]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT383]]
// CHECK:       llx.atomic.exit383:
// CHECK-NEXT:    [[TMP3949:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3950:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3951:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3949]], i64 [[TMP3950]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3952:%.*]] = extractvalue { i64, i1 } [[TMP3951]], 0
// CHECK-NEXT:    [[TMP3953:%.*]] = extractvalue { i64, i1 } [[TMP3951]], 1
// CHECK-NEXT:    br i1 [[TMP3953]], label [[LLX_ATOMIC_EXIT385:%.*]], label [[LLX_ATOMIC_CONT386:%.*]]
// CHECK:       llx.atomic.cont386:
// CHECK-NEXT:    store i64 [[TMP3952]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT385]]
// CHECK:       llx.atomic.exit385:
// CHECK-NEXT:    [[TMP3954:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3955:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3956:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3954]], i64 [[TMP3955]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3957:%.*]] = extractvalue { i64, i1 } [[TMP3956]], 1
// CHECK-NEXT:    [[TMP3958:%.*]] = sext i1 [[TMP3957]] to i64
// CHECK-NEXT:    store i64 [[TMP3958]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3959:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3960:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3961:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3959]], i64 [[TMP3960]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3962:%.*]] = extractvalue { i64, i1 } [[TMP3961]], 1
// CHECK-NEXT:    [[TMP3963:%.*]] = sext i1 [[TMP3962]] to i64
// CHECK-NEXT:    store i64 [[TMP3963]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3964:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3965:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3966:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3964]], i64 [[TMP3965]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3967:%.*]] = extractvalue { i64, i1 } [[TMP3966]], 0
// CHECK-NEXT:    [[TMP3968:%.*]] = extractvalue { i64, i1 } [[TMP3966]], 1
// CHECK-NEXT:    br i1 [[TMP3968]], label [[LLX_ATOMIC_EXIT387:%.*]], label [[LLX_ATOMIC_CONT388:%.*]]
// CHECK:       llx.atomic.cont388:
// CHECK-NEXT:    store i64 [[TMP3967]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT387]]
// CHECK:       llx.atomic.exit387:
// CHECK-NEXT:    [[TMP3969:%.*]] = extractvalue { i64, i1 } [[TMP3966]], 1
// CHECK-NEXT:    [[TMP3970:%.*]] = sext i1 [[TMP3969]] to i64
// CHECK-NEXT:    store i64 [[TMP3970]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3971:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3972:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3973:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3971]], i64 [[TMP3972]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP3974:%.*]] = extractvalue { i64, i1 } [[TMP3973]], 0
// CHECK-NEXT:    [[TMP3975:%.*]] = extractvalue { i64, i1 } [[TMP3973]], 1
// CHECK-NEXT:    br i1 [[TMP3975]], label [[LLX_ATOMIC_EXIT389:%.*]], label [[LLX_ATOMIC_CONT390:%.*]]
// CHECK:       llx.atomic.cont390:
// CHECK-NEXT:    store i64 [[TMP3974]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT389]]
// CHECK:       llx.atomic.exit389:
// CHECK-NEXT:    [[TMP3976:%.*]] = extractvalue { i64, i1 } [[TMP3973]], 1
// CHECK-NEXT:    [[TMP3977:%.*]] = sext i1 [[TMP3976]] to i64
// CHECK-NEXT:    store i64 [[TMP3977]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP3978:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3979:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3978]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3979]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3980:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3981:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3980]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3981]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3982:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3983:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3982]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3983]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3984:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3985:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3984]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3985]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3986:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3987:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3988:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3986]], i64 [[TMP3987]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3989:%.*]] = extractvalue { i64, i1 } [[TMP3988]], 0
// CHECK-NEXT:    store i64 [[TMP3989]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3990:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3991:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP3992:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP3990]], i64 [[TMP3991]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP3993:%.*]] = extractvalue { i64, i1 } [[TMP3992]], 0
// CHECK-NEXT:    store i64 [[TMP3993]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3994:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3995:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP3994]] monotonic, align 8
// CHECK-NEXT:    [[TMP3996:%.*]] = icmp sgt i64 [[TMP3995]], [[TMP3994]]
// CHECK-NEXT:    [[TMP3997:%.*]] = select i1 [[TMP3996]], i64 [[TMP3994]], i64 [[TMP3995]]
// CHECK-NEXT:    store i64 [[TMP3997]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP3998:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3999:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP3998]] monotonic, align 8
// CHECK-NEXT:    [[TMP4000:%.*]] = icmp slt i64 [[TMP3999]], [[TMP3998]]
// CHECK-NEXT:    [[TMP4001:%.*]] = select i1 [[TMP4000]], i64 [[TMP3998]], i64 [[TMP3999]]
// CHECK-NEXT:    store i64 [[TMP4001]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP4002:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4003:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4002]] monotonic, align 8
// CHECK-NEXT:    [[TMP4004:%.*]] = icmp slt i64 [[TMP4003]], [[TMP4002]]
// CHECK-NEXT:    [[TMP4005:%.*]] = select i1 [[TMP4004]], i64 [[TMP4002]], i64 [[TMP4003]]
// CHECK-NEXT:    store i64 [[TMP4005]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP4006:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4007:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4006]] monotonic, align 8
// CHECK-NEXT:    [[TMP4008:%.*]] = icmp sgt i64 [[TMP4007]], [[TMP4006]]
// CHECK-NEXT:    [[TMP4009:%.*]] = select i1 [[TMP4008]], i64 [[TMP4006]], i64 [[TMP4007]]
// CHECK-NEXT:    store i64 [[TMP4009]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP4010:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4011:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4012:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4010]], i64 [[TMP4011]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4013:%.*]] = extractvalue { i64, i1 } [[TMP4012]], 0
// CHECK-NEXT:    [[TMP4014:%.*]] = extractvalue { i64, i1 } [[TMP4012]], 1
// CHECK-NEXT:    [[TMP4015:%.*]] = select i1 [[TMP4014]], i64 [[TMP4010]], i64 [[TMP4013]]
// CHECK-NEXT:    store i64 [[TMP4015]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP4016:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4017:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4018:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4016]], i64 [[TMP4017]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4019:%.*]] = extractvalue { i64, i1 } [[TMP4018]], 0
// CHECK-NEXT:    [[TMP4020:%.*]] = extractvalue { i64, i1 } [[TMP4018]], 1
// CHECK-NEXT:    [[TMP4021:%.*]] = select i1 [[TMP4020]], i64 [[TMP4016]], i64 [[TMP4019]]
// CHECK-NEXT:    store i64 [[TMP4021]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP4022:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4023:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4024:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4022]], i64 [[TMP4023]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4025:%.*]] = extractvalue { i64, i1 } [[TMP4024]], 0
// CHECK-NEXT:    [[TMP4026:%.*]] = extractvalue { i64, i1 } [[TMP4024]], 1
// CHECK-NEXT:    br i1 [[TMP4026]], label [[LLX_ATOMIC_EXIT391:%.*]], label [[LLX_ATOMIC_CONT392:%.*]]
// CHECK:       llx.atomic.cont392:
// CHECK-NEXT:    store i64 [[TMP4025]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT391]]
// CHECK:       llx.atomic.exit391:
// CHECK-NEXT:    [[TMP4027:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4028:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4029:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4027]], i64 [[TMP4028]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4030:%.*]] = extractvalue { i64, i1 } [[TMP4029]], 0
// CHECK-NEXT:    [[TMP4031:%.*]] = extractvalue { i64, i1 } [[TMP4029]], 1
// CHECK-NEXT:    br i1 [[TMP4031]], label [[LLX_ATOMIC_EXIT393:%.*]], label [[LLX_ATOMIC_CONT394:%.*]]
// CHECK:       llx.atomic.cont394:
// CHECK-NEXT:    store i64 [[TMP4030]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT393]]
// CHECK:       llx.atomic.exit393:
// CHECK-NEXT:    [[TMP4032:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4033:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4034:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4032]], i64 [[TMP4033]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4035:%.*]] = extractvalue { i64, i1 } [[TMP4034]], 1
// CHECK-NEXT:    [[TMP4036:%.*]] = sext i1 [[TMP4035]] to i64
// CHECK-NEXT:    store i64 [[TMP4036]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP4037:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4038:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4039:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4037]], i64 [[TMP4038]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4040:%.*]] = extractvalue { i64, i1 } [[TMP4039]], 1
// CHECK-NEXT:    [[TMP4041:%.*]] = sext i1 [[TMP4040]] to i64
// CHECK-NEXT:    store i64 [[TMP4041]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP4042:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4043:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4044:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4042]], i64 [[TMP4043]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4045:%.*]] = extractvalue { i64, i1 } [[TMP4044]], 0
// CHECK-NEXT:    [[TMP4046:%.*]] = extractvalue { i64, i1 } [[TMP4044]], 1
// CHECK-NEXT:    br i1 [[TMP4046]], label [[LLX_ATOMIC_EXIT395:%.*]], label [[LLX_ATOMIC_CONT396:%.*]]
// CHECK:       llx.atomic.cont396:
// CHECK-NEXT:    store i64 [[TMP4045]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT395]]
// CHECK:       llx.atomic.exit395:
// CHECK-NEXT:    [[TMP4047:%.*]] = extractvalue { i64, i1 } [[TMP4044]], 1
// CHECK-NEXT:    [[TMP4048:%.*]] = sext i1 [[TMP4047]] to i64
// CHECK-NEXT:    store i64 [[TMP4048]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP4049:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4050:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4051:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4049]], i64 [[TMP4050]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4052:%.*]] = extractvalue { i64, i1 } [[TMP4051]], 0
// CHECK-NEXT:    [[TMP4053:%.*]] = extractvalue { i64, i1 } [[TMP4051]], 1
// CHECK-NEXT:    br i1 [[TMP4053]], label [[LLX_ATOMIC_EXIT397:%.*]], label [[LLX_ATOMIC_CONT398:%.*]]
// CHECK:       llx.atomic.cont398:
// CHECK-NEXT:    store i64 [[TMP4052]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT397]]
// CHECK:       llx.atomic.exit397:
// CHECK-NEXT:    [[TMP4054:%.*]] = extractvalue { i64, i1 } [[TMP4051]], 1
// CHECK-NEXT:    [[TMP4055:%.*]] = sext i1 [[TMP4054]] to i64
// CHECK-NEXT:    store i64 [[TMP4055]], ptr [[LLR]], align 8
// CHECK-NEXT:    [[TMP4056:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4057:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4056]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4057]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4058:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4059:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4058]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4059]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4060:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4061:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4060]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4061]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4062:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4063:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4062]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4063]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4064:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4065:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4066:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4064]], i64 [[TMP4065]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4067:%.*]] = extractvalue { i64, i1 } [[TMP4066]], 0
// CHECK-NEXT:    store i64 [[TMP4067]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4068:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4069:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4070:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4068]], i64 [[TMP4069]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4071:%.*]] = extractvalue { i64, i1 } [[TMP4070]], 0
// CHECK-NEXT:    store i64 [[TMP4071]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4072:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4073:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4072]] release, align 8
// CHECK-NEXT:    [[TMP4074:%.*]] = icmp sgt i64 [[TMP4073]], [[TMP4072]]
// CHECK-NEXT:    [[TMP4075:%.*]] = select i1 [[TMP4074]], i64 [[TMP4072]], i64 [[TMP4073]]
// CHECK-NEXT:    store i64 [[TMP4075]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4076:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4077:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4076]] release, align 8
// CHECK-NEXT:    [[TMP4078:%.*]] = icmp slt i64 [[TMP4077]], [[TMP4076]]
// CHECK-NEXT:    [[TMP4079:%.*]] = select i1 [[TMP4078]], i64 [[TMP4076]], i64 [[TMP4077]]
// CHECK-NEXT:    store i64 [[TMP4079]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4080:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4081:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4080]] release, align 8
// CHECK-NEXT:    [[TMP4082:%.*]] = icmp slt i64 [[TMP4081]], [[TMP4080]]
// CHECK-NEXT:    [[TMP4083:%.*]] = select i1 [[TMP4082]], i64 [[TMP4080]], i64 [[TMP4081]]
// CHECK-NEXT:    store i64 [[TMP4083]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4084:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4085:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4084]] release, align 8
// CHECK-NEXT:    [[TMP4086:%.*]] = icmp sgt i64 [[TMP4085]], [[TMP4084]]
// CHECK-NEXT:    [[TMP4087:%.*]] = select i1 [[TMP4086]], i64 [[TMP4084]], i64 [[TMP4085]]
// CHECK-NEXT:    store i64 [[TMP4087]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4088:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4089:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4090:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4088]], i64 [[TMP4089]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4091:%.*]] = extractvalue { i64, i1 } [[TMP4090]], 0
// CHECK-NEXT:    [[TMP4092:%.*]] = extractvalue { i64, i1 } [[TMP4090]], 1
// CHECK-NEXT:    [[TMP4093:%.*]] = select i1 [[TMP4092]], i64 [[TMP4088]], i64 [[TMP4091]]
// CHECK-NEXT:    store i64 [[TMP4093]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4094:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4095:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4096:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4094]], i64 [[TMP4095]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4097:%.*]] = extractvalue { i64, i1 } [[TMP4096]], 0
// CHECK-NEXT:    [[TMP4098:%.*]] = extractvalue { i64, i1 } [[TMP4096]], 1
// CHECK-NEXT:    [[TMP4099:%.*]] = select i1 [[TMP4098]], i64 [[TMP4094]], i64 [[TMP4097]]
// CHECK-NEXT:    store i64 [[TMP4099]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4100:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4101:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4102:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4100]], i64 [[TMP4101]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4103:%.*]] = extractvalue { i64, i1 } [[TMP4102]], 0
// CHECK-NEXT:    [[TMP4104:%.*]] = extractvalue { i64, i1 } [[TMP4102]], 1
// CHECK-NEXT:    br i1 [[TMP4104]], label [[LLX_ATOMIC_EXIT399:%.*]], label [[LLX_ATOMIC_CONT400:%.*]]
// CHECK:       llx.atomic.cont400:
// CHECK-NEXT:    store i64 [[TMP4103]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT399]]
// CHECK:       llx.atomic.exit399:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4105:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4106:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4107:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4105]], i64 [[TMP4106]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4108:%.*]] = extractvalue { i64, i1 } [[TMP4107]], 0
// CHECK-NEXT:    [[TMP4109:%.*]] = extractvalue { i64, i1 } [[TMP4107]], 1
// CHECK-NEXT:    br i1 [[TMP4109]], label [[LLX_ATOMIC_EXIT401:%.*]], label [[LLX_ATOMIC_CONT402:%.*]]
// CHECK:       llx.atomic.cont402:
// CHECK-NEXT:    store i64 [[TMP4108]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT401]]
// CHECK:       llx.atomic.exit401:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4110:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4111:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4112:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4110]], i64 [[TMP4111]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4113:%.*]] = extractvalue { i64, i1 } [[TMP4112]], 1
// CHECK-NEXT:    [[TMP4114:%.*]] = sext i1 [[TMP4113]] to i64
// CHECK-NEXT:    store i64 [[TMP4114]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4115:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4116:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4117:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4115]], i64 [[TMP4116]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4118:%.*]] = extractvalue { i64, i1 } [[TMP4117]], 1
// CHECK-NEXT:    [[TMP4119:%.*]] = sext i1 [[TMP4118]] to i64
// CHECK-NEXT:    store i64 [[TMP4119]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4120:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4121:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4122:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4120]], i64 [[TMP4121]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4123:%.*]] = extractvalue { i64, i1 } [[TMP4122]], 0
// CHECK-NEXT:    [[TMP4124:%.*]] = extractvalue { i64, i1 } [[TMP4122]], 1
// CHECK-NEXT:    br i1 [[TMP4124]], label [[LLX_ATOMIC_EXIT403:%.*]], label [[LLX_ATOMIC_CONT404:%.*]]
// CHECK:       llx.atomic.cont404:
// CHECK-NEXT:    store i64 [[TMP4123]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT403]]
// CHECK:       llx.atomic.exit403:
// CHECK-NEXT:    [[TMP4125:%.*]] = extractvalue { i64, i1 } [[TMP4122]], 1
// CHECK-NEXT:    [[TMP4126:%.*]] = sext i1 [[TMP4125]] to i64
// CHECK-NEXT:    store i64 [[TMP4126]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4127:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4128:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4129:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4127]], i64 [[TMP4128]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4130:%.*]] = extractvalue { i64, i1 } [[TMP4129]], 0
// CHECK-NEXT:    [[TMP4131:%.*]] = extractvalue { i64, i1 } [[TMP4129]], 1
// CHECK-NEXT:    br i1 [[TMP4131]], label [[LLX_ATOMIC_EXIT405:%.*]], label [[LLX_ATOMIC_CONT406:%.*]]
// CHECK:       llx.atomic.cont406:
// CHECK-NEXT:    store i64 [[TMP4130]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT405]]
// CHECK:       llx.atomic.exit405:
// CHECK-NEXT:    [[TMP4132:%.*]] = extractvalue { i64, i1 } [[TMP4129]], 1
// CHECK-NEXT:    [[TMP4133:%.*]] = sext i1 [[TMP4132]] to i64
// CHECK-NEXT:    store i64 [[TMP4133]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4134:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4135:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4134]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4135]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4136:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4137:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4136]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4137]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4138:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4139:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4138]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4139]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4140:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4141:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4140]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4141]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4142:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4143:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4144:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4142]], i64 [[TMP4143]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4145:%.*]] = extractvalue { i64, i1 } [[TMP4144]], 0
// CHECK-NEXT:    store i64 [[TMP4145]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4146:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4147:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4148:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4146]], i64 [[TMP4147]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4149:%.*]] = extractvalue { i64, i1 } [[TMP4148]], 0
// CHECK-NEXT:    store i64 [[TMP4149]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4150:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4151:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4150]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4152:%.*]] = icmp sgt i64 [[TMP4151]], [[TMP4150]]
// CHECK-NEXT:    [[TMP4153:%.*]] = select i1 [[TMP4152]], i64 [[TMP4150]], i64 [[TMP4151]]
// CHECK-NEXT:    store i64 [[TMP4153]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4154:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4155:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4154]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4156:%.*]] = icmp slt i64 [[TMP4155]], [[TMP4154]]
// CHECK-NEXT:    [[TMP4157:%.*]] = select i1 [[TMP4156]], i64 [[TMP4154]], i64 [[TMP4155]]
// CHECK-NEXT:    store i64 [[TMP4157]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4158:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4159:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP4158]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4160:%.*]] = icmp slt i64 [[TMP4159]], [[TMP4158]]
// CHECK-NEXT:    [[TMP4161:%.*]] = select i1 [[TMP4160]], i64 [[TMP4158]], i64 [[TMP4159]]
// CHECK-NEXT:    store i64 [[TMP4161]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4162:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4163:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP4162]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4164:%.*]] = icmp sgt i64 [[TMP4163]], [[TMP4162]]
// CHECK-NEXT:    [[TMP4165:%.*]] = select i1 [[TMP4164]], i64 [[TMP4162]], i64 [[TMP4163]]
// CHECK-NEXT:    store i64 [[TMP4165]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4166:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4167:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4168:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4166]], i64 [[TMP4167]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4169:%.*]] = extractvalue { i64, i1 } [[TMP4168]], 0
// CHECK-NEXT:    [[TMP4170:%.*]] = extractvalue { i64, i1 } [[TMP4168]], 1
// CHECK-NEXT:    [[TMP4171:%.*]] = select i1 [[TMP4170]], i64 [[TMP4166]], i64 [[TMP4169]]
// CHECK-NEXT:    store i64 [[TMP4171]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4172:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4173:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4174:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4172]], i64 [[TMP4173]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4175:%.*]] = extractvalue { i64, i1 } [[TMP4174]], 0
// CHECK-NEXT:    [[TMP4176:%.*]] = extractvalue { i64, i1 } [[TMP4174]], 1
// CHECK-NEXT:    [[TMP4177:%.*]] = select i1 [[TMP4176]], i64 [[TMP4172]], i64 [[TMP4175]]
// CHECK-NEXT:    store i64 [[TMP4177]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4178:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4179:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4180:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4178]], i64 [[TMP4179]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4181:%.*]] = extractvalue { i64, i1 } [[TMP4180]], 0
// CHECK-NEXT:    [[TMP4182:%.*]] = extractvalue { i64, i1 } [[TMP4180]], 1
// CHECK-NEXT:    br i1 [[TMP4182]], label [[LLX_ATOMIC_EXIT407:%.*]], label [[LLX_ATOMIC_CONT408:%.*]]
// CHECK:       llx.atomic.cont408:
// CHECK-NEXT:    store i64 [[TMP4181]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT407]]
// CHECK:       llx.atomic.exit407:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4183:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4184:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4185:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4183]], i64 [[TMP4184]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4186:%.*]] = extractvalue { i64, i1 } [[TMP4185]], 0
// CHECK-NEXT:    [[TMP4187:%.*]] = extractvalue { i64, i1 } [[TMP4185]], 1
// CHECK-NEXT:    br i1 [[TMP4187]], label [[LLX_ATOMIC_EXIT409:%.*]], label [[LLX_ATOMIC_CONT410:%.*]]
// CHECK:       llx.atomic.cont410:
// CHECK-NEXT:    store i64 [[TMP4186]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT409]]
// CHECK:       llx.atomic.exit409:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4188:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4189:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4190:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4188]], i64 [[TMP4189]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4191:%.*]] = extractvalue { i64, i1 } [[TMP4190]], 1
// CHECK-NEXT:    [[TMP4192:%.*]] = sext i1 [[TMP4191]] to i64
// CHECK-NEXT:    store i64 [[TMP4192]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4193:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4194:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4195:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4193]], i64 [[TMP4194]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4196:%.*]] = extractvalue { i64, i1 } [[TMP4195]], 1
// CHECK-NEXT:    [[TMP4197:%.*]] = sext i1 [[TMP4196]] to i64
// CHECK-NEXT:    store i64 [[TMP4197]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4198:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4199:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4200:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4198]], i64 [[TMP4199]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4201:%.*]] = extractvalue { i64, i1 } [[TMP4200]], 0
// CHECK-NEXT:    [[TMP4202:%.*]] = extractvalue { i64, i1 } [[TMP4200]], 1
// CHECK-NEXT:    br i1 [[TMP4202]], label [[LLX_ATOMIC_EXIT411:%.*]], label [[LLX_ATOMIC_CONT412:%.*]]
// CHECK:       llx.atomic.cont412:
// CHECK-NEXT:    store i64 [[TMP4201]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT411]]
// CHECK:       llx.atomic.exit411:
// CHECK-NEXT:    [[TMP4203:%.*]] = extractvalue { i64, i1 } [[TMP4200]], 1
// CHECK-NEXT:    [[TMP4204:%.*]] = sext i1 [[TMP4203]] to i64
// CHECK-NEXT:    store i64 [[TMP4204]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4205:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP4206:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP4207:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4205]], i64 [[TMP4206]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4208:%.*]] = extractvalue { i64, i1 } [[TMP4207]], 0
// CHECK-NEXT:    [[TMP4209:%.*]] = extractvalue { i64, i1 } [[TMP4207]], 1
// CHECK-NEXT:    br i1 [[TMP4209]], label [[LLX_ATOMIC_EXIT413:%.*]], label [[LLX_ATOMIC_CONT414:%.*]]
// CHECK:       llx.atomic.cont414:
// CHECK-NEXT:    store i64 [[TMP4208]], ptr [[LLV]], align 8
// CHECK-NEXT:    br label [[LLX_ATOMIC_EXIT413]]
// CHECK:       llx.atomic.exit413:
// CHECK-NEXT:    [[TMP4210:%.*]] = extractvalue { i64, i1 } [[TMP4207]], 1
// CHECK-NEXT:    [[TMP4211:%.*]] = sext i1 [[TMP4210]] to i64
// CHECK-NEXT:    store i64 [[TMP4211]], ptr [[LLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4212:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4213:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4212]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4213]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4214:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4215:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4214]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4215]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4216:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4217:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4216]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4217]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4218:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4219:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4218]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4219]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4220:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4221:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4222:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4220]], i64 [[TMP4221]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4223:%.*]] = extractvalue { i64, i1 } [[TMP4222]], 0
// CHECK-NEXT:    store i64 [[TMP4223]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4224:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4225:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4226:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4224]], i64 [[TMP4225]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4227:%.*]] = extractvalue { i64, i1 } [[TMP4226]], 0
// CHECK-NEXT:    store i64 [[TMP4227]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4228:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4229:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4228]] monotonic, align 8
// CHECK-NEXT:    [[TMP4230:%.*]] = icmp ugt i64 [[TMP4229]], [[TMP4228]]
// CHECK-NEXT:    [[TMP4231:%.*]] = select i1 [[TMP4230]], i64 [[TMP4228]], i64 [[TMP4229]]
// CHECK-NEXT:    store i64 [[TMP4231]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4232:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4233:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4232]] monotonic, align 8
// CHECK-NEXT:    [[TMP4234:%.*]] = icmp ult i64 [[TMP4233]], [[TMP4232]]
// CHECK-NEXT:    [[TMP4235:%.*]] = select i1 [[TMP4234]], i64 [[TMP4232]], i64 [[TMP4233]]
// CHECK-NEXT:    store i64 [[TMP4235]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4236:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4237:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4236]] monotonic, align 8
// CHECK-NEXT:    [[TMP4238:%.*]] = icmp ult i64 [[TMP4237]], [[TMP4236]]
// CHECK-NEXT:    [[TMP4239:%.*]] = select i1 [[TMP4238]], i64 [[TMP4236]], i64 [[TMP4237]]
// CHECK-NEXT:    store i64 [[TMP4239]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4240:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4241:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4240]] monotonic, align 8
// CHECK-NEXT:    [[TMP4242:%.*]] = icmp ugt i64 [[TMP4241]], [[TMP4240]]
// CHECK-NEXT:    [[TMP4243:%.*]] = select i1 [[TMP4242]], i64 [[TMP4240]], i64 [[TMP4241]]
// CHECK-NEXT:    store i64 [[TMP4243]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4244:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4245:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4246:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4244]], i64 [[TMP4245]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4247:%.*]] = extractvalue { i64, i1 } [[TMP4246]], 0
// CHECK-NEXT:    [[TMP4248:%.*]] = extractvalue { i64, i1 } [[TMP4246]], 1
// CHECK-NEXT:    [[TMP4249:%.*]] = select i1 [[TMP4248]], i64 [[TMP4244]], i64 [[TMP4247]]
// CHECK-NEXT:    store i64 [[TMP4249]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4250:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4251:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4252:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4250]], i64 [[TMP4251]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4253:%.*]] = extractvalue { i64, i1 } [[TMP4252]], 0
// CHECK-NEXT:    [[TMP4254:%.*]] = extractvalue { i64, i1 } [[TMP4252]], 1
// CHECK-NEXT:    [[TMP4255:%.*]] = select i1 [[TMP4254]], i64 [[TMP4250]], i64 [[TMP4253]]
// CHECK-NEXT:    store i64 [[TMP4255]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4256:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4257:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4258:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4256]], i64 [[TMP4257]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4259:%.*]] = extractvalue { i64, i1 } [[TMP4258]], 0
// CHECK-NEXT:    [[TMP4260:%.*]] = extractvalue { i64, i1 } [[TMP4258]], 1
// CHECK-NEXT:    br i1 [[TMP4260]], label [[ULLX_ATOMIC_EXIT:%.*]], label [[ULLX_ATOMIC_CONT:%.*]]
// CHECK:       ullx.atomic.cont:
// CHECK-NEXT:    store i64 [[TMP4259]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT]]
// CHECK:       ullx.atomic.exit:
// CHECK-NEXT:    [[TMP4261:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4262:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4263:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4261]], i64 [[TMP4262]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4264:%.*]] = extractvalue { i64, i1 } [[TMP4263]], 0
// CHECK-NEXT:    [[TMP4265:%.*]] = extractvalue { i64, i1 } [[TMP4263]], 1
// CHECK-NEXT:    br i1 [[TMP4265]], label [[ULLX_ATOMIC_EXIT415:%.*]], label [[ULLX_ATOMIC_CONT416:%.*]]
// CHECK:       ullx.atomic.cont416:
// CHECK-NEXT:    store i64 [[TMP4264]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT415]]
// CHECK:       ullx.atomic.exit415:
// CHECK-NEXT:    [[TMP4266:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4267:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4268:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4266]], i64 [[TMP4267]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4269:%.*]] = extractvalue { i64, i1 } [[TMP4268]], 1
// CHECK-NEXT:    [[TMP4270:%.*]] = zext i1 [[TMP4269]] to i64
// CHECK-NEXT:    store i64 [[TMP4270]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4271:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4272:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4273:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4271]], i64 [[TMP4272]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4274:%.*]] = extractvalue { i64, i1 } [[TMP4273]], 1
// CHECK-NEXT:    [[TMP4275:%.*]] = zext i1 [[TMP4274]] to i64
// CHECK-NEXT:    store i64 [[TMP4275]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4276:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4277:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4278:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4276]], i64 [[TMP4277]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4279:%.*]] = extractvalue { i64, i1 } [[TMP4278]], 0
// CHECK-NEXT:    [[TMP4280:%.*]] = extractvalue { i64, i1 } [[TMP4278]], 1
// CHECK-NEXT:    br i1 [[TMP4280]], label [[ULLX_ATOMIC_EXIT417:%.*]], label [[ULLX_ATOMIC_CONT418:%.*]]
// CHECK:       ullx.atomic.cont418:
// CHECK-NEXT:    store i64 [[TMP4279]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT417]]
// CHECK:       ullx.atomic.exit417:
// CHECK-NEXT:    [[TMP4281:%.*]] = extractvalue { i64, i1 } [[TMP4278]], 1
// CHECK-NEXT:    [[TMP4282:%.*]] = zext i1 [[TMP4281]] to i64
// CHECK-NEXT:    store i64 [[TMP4282]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4283:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4284:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4285:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4283]], i64 [[TMP4284]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4286:%.*]] = extractvalue { i64, i1 } [[TMP4285]], 0
// CHECK-NEXT:    [[TMP4287:%.*]] = extractvalue { i64, i1 } [[TMP4285]], 1
// CHECK-NEXT:    br i1 [[TMP4287]], label [[ULLX_ATOMIC_EXIT419:%.*]], label [[ULLX_ATOMIC_CONT420:%.*]]
// CHECK:       ullx.atomic.cont420:
// CHECK-NEXT:    store i64 [[TMP4286]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT419]]
// CHECK:       ullx.atomic.exit419:
// CHECK-NEXT:    [[TMP4288:%.*]] = extractvalue { i64, i1 } [[TMP4285]], 1
// CHECK-NEXT:    [[TMP4289:%.*]] = zext i1 [[TMP4288]] to i64
// CHECK-NEXT:    store i64 [[TMP4289]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4290:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4291:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4290]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP4291]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4292:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4293:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4292]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP4293]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4294:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4295:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4294]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP4295]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4296:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4297:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4296]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP4297]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4298:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4299:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4300:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4298]], i64 [[TMP4299]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4301:%.*]] = extractvalue { i64, i1 } [[TMP4300]], 0
// CHECK-NEXT:    store i64 [[TMP4301]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4302:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4303:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4304:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4302]], i64 [[TMP4303]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4305:%.*]] = extractvalue { i64, i1 } [[TMP4304]], 0
// CHECK-NEXT:    store i64 [[TMP4305]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4306:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4307:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4306]] acq_rel, align 8
// CHECK-NEXT:    [[TMP4308:%.*]] = icmp ugt i64 [[TMP4307]], [[TMP4306]]
// CHECK-NEXT:    [[TMP4309:%.*]] = select i1 [[TMP4308]], i64 [[TMP4306]], i64 [[TMP4307]]
// CHECK-NEXT:    store i64 [[TMP4309]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4310:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4311:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4310]] acq_rel, align 8
// CHECK-NEXT:    [[TMP4312:%.*]] = icmp ult i64 [[TMP4311]], [[TMP4310]]
// CHECK-NEXT:    [[TMP4313:%.*]] = select i1 [[TMP4312]], i64 [[TMP4310]], i64 [[TMP4311]]
// CHECK-NEXT:    store i64 [[TMP4313]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4314:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4315:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4314]] acq_rel, align 8
// CHECK-NEXT:    [[TMP4316:%.*]] = icmp ult i64 [[TMP4315]], [[TMP4314]]
// CHECK-NEXT:    [[TMP4317:%.*]] = select i1 [[TMP4316]], i64 [[TMP4314]], i64 [[TMP4315]]
// CHECK-NEXT:    store i64 [[TMP4317]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4318:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4319:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4318]] acq_rel, align 8
// CHECK-NEXT:    [[TMP4320:%.*]] = icmp ugt i64 [[TMP4319]], [[TMP4318]]
// CHECK-NEXT:    [[TMP4321:%.*]] = select i1 [[TMP4320]], i64 [[TMP4318]], i64 [[TMP4319]]
// CHECK-NEXT:    store i64 [[TMP4321]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4322:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4323:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4324:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4322]], i64 [[TMP4323]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4325:%.*]] = extractvalue { i64, i1 } [[TMP4324]], 0
// CHECK-NEXT:    [[TMP4326:%.*]] = extractvalue { i64, i1 } [[TMP4324]], 1
// CHECK-NEXT:    [[TMP4327:%.*]] = select i1 [[TMP4326]], i64 [[TMP4322]], i64 [[TMP4325]]
// CHECK-NEXT:    store i64 [[TMP4327]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4328:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4329:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4330:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4328]], i64 [[TMP4329]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4331:%.*]] = extractvalue { i64, i1 } [[TMP4330]], 0
// CHECK-NEXT:    [[TMP4332:%.*]] = extractvalue { i64, i1 } [[TMP4330]], 1
// CHECK-NEXT:    [[TMP4333:%.*]] = select i1 [[TMP4332]], i64 [[TMP4328]], i64 [[TMP4331]]
// CHECK-NEXT:    store i64 [[TMP4333]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4334:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4335:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4336:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4334]], i64 [[TMP4335]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4337:%.*]] = extractvalue { i64, i1 } [[TMP4336]], 0
// CHECK-NEXT:    [[TMP4338:%.*]] = extractvalue { i64, i1 } [[TMP4336]], 1
// CHECK-NEXT:    br i1 [[TMP4338]], label [[ULLX_ATOMIC_EXIT421:%.*]], label [[ULLX_ATOMIC_CONT422:%.*]]
// CHECK:       ullx.atomic.cont422:
// CHECK-NEXT:    store i64 [[TMP4337]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT421]]
// CHECK:       ullx.atomic.exit421:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4339:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4340:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4341:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4339]], i64 [[TMP4340]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4342:%.*]] = extractvalue { i64, i1 } [[TMP4341]], 0
// CHECK-NEXT:    [[TMP4343:%.*]] = extractvalue { i64, i1 } [[TMP4341]], 1
// CHECK-NEXT:    br i1 [[TMP4343]], label [[ULLX_ATOMIC_EXIT423:%.*]], label [[ULLX_ATOMIC_CONT424:%.*]]
// CHECK:       ullx.atomic.cont424:
// CHECK-NEXT:    store i64 [[TMP4342]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT423]]
// CHECK:       ullx.atomic.exit423:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4344:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4345:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4346:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4344]], i64 [[TMP4345]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4347:%.*]] = extractvalue { i64, i1 } [[TMP4346]], 1
// CHECK-NEXT:    [[TMP4348:%.*]] = zext i1 [[TMP4347]] to i64
// CHECK-NEXT:    store i64 [[TMP4348]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4349:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4350:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4351:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4349]], i64 [[TMP4350]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4352:%.*]] = extractvalue { i64, i1 } [[TMP4351]], 1
// CHECK-NEXT:    [[TMP4353:%.*]] = zext i1 [[TMP4352]] to i64
// CHECK-NEXT:    store i64 [[TMP4353]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4354:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4355:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4356:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4354]], i64 [[TMP4355]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4357:%.*]] = extractvalue { i64, i1 } [[TMP4356]], 0
// CHECK-NEXT:    [[TMP4358:%.*]] = extractvalue { i64, i1 } [[TMP4356]], 1
// CHECK-NEXT:    br i1 [[TMP4358]], label [[ULLX_ATOMIC_EXIT425:%.*]], label [[ULLX_ATOMIC_CONT426:%.*]]
// CHECK:       ullx.atomic.cont426:
// CHECK-NEXT:    store i64 [[TMP4357]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT425]]
// CHECK:       ullx.atomic.exit425:
// CHECK-NEXT:    [[TMP4359:%.*]] = extractvalue { i64, i1 } [[TMP4356]], 1
// CHECK-NEXT:    [[TMP4360:%.*]] = zext i1 [[TMP4359]] to i64
// CHECK-NEXT:    store i64 [[TMP4360]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4361:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4362:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4363:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4361]], i64 [[TMP4362]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP4364:%.*]] = extractvalue { i64, i1 } [[TMP4363]], 0
// CHECK-NEXT:    [[TMP4365:%.*]] = extractvalue { i64, i1 } [[TMP4363]], 1
// CHECK-NEXT:    br i1 [[TMP4365]], label [[ULLX_ATOMIC_EXIT427:%.*]], label [[ULLX_ATOMIC_CONT428:%.*]]
// CHECK:       ullx.atomic.cont428:
// CHECK-NEXT:    store i64 [[TMP4364]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT427]]
// CHECK:       ullx.atomic.exit427:
// CHECK-NEXT:    [[TMP4366:%.*]] = extractvalue { i64, i1 } [[TMP4363]], 1
// CHECK-NEXT:    [[TMP4367:%.*]] = zext i1 [[TMP4366]] to i64
// CHECK-NEXT:    store i64 [[TMP4367]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4368:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4369:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4368]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP4369]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4370:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4371:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4370]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP4371]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4372:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4373:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4372]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP4373]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4374:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4375:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4374]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP4375]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4376:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4377:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4378:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4376]], i64 [[TMP4377]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4379:%.*]] = extractvalue { i64, i1 } [[TMP4378]], 0
// CHECK-NEXT:    store i64 [[TMP4379]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4380:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4381:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4382:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4380]], i64 [[TMP4381]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4383:%.*]] = extractvalue { i64, i1 } [[TMP4382]], 0
// CHECK-NEXT:    store i64 [[TMP4383]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4384:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4385:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4384]] acquire, align 8
// CHECK-NEXT:    [[TMP4386:%.*]] = icmp ugt i64 [[TMP4385]], [[TMP4384]]
// CHECK-NEXT:    [[TMP4387:%.*]] = select i1 [[TMP4386]], i64 [[TMP4384]], i64 [[TMP4385]]
// CHECK-NEXT:    store i64 [[TMP4387]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4388:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4389:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4388]] acquire, align 8
// CHECK-NEXT:    [[TMP4390:%.*]] = icmp ult i64 [[TMP4389]], [[TMP4388]]
// CHECK-NEXT:    [[TMP4391:%.*]] = select i1 [[TMP4390]], i64 [[TMP4388]], i64 [[TMP4389]]
// CHECK-NEXT:    store i64 [[TMP4391]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4392:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4393:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4392]] acquire, align 8
// CHECK-NEXT:    [[TMP4394:%.*]] = icmp ult i64 [[TMP4393]], [[TMP4392]]
// CHECK-NEXT:    [[TMP4395:%.*]] = select i1 [[TMP4394]], i64 [[TMP4392]], i64 [[TMP4393]]
// CHECK-NEXT:    store i64 [[TMP4395]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4396:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4397:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4396]] acquire, align 8
// CHECK-NEXT:    [[TMP4398:%.*]] = icmp ugt i64 [[TMP4397]], [[TMP4396]]
// CHECK-NEXT:    [[TMP4399:%.*]] = select i1 [[TMP4398]], i64 [[TMP4396]], i64 [[TMP4397]]
// CHECK-NEXT:    store i64 [[TMP4399]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4400:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4401:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4402:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4400]], i64 [[TMP4401]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4403:%.*]] = extractvalue { i64, i1 } [[TMP4402]], 0
// CHECK-NEXT:    [[TMP4404:%.*]] = extractvalue { i64, i1 } [[TMP4402]], 1
// CHECK-NEXT:    [[TMP4405:%.*]] = select i1 [[TMP4404]], i64 [[TMP4400]], i64 [[TMP4403]]
// CHECK-NEXT:    store i64 [[TMP4405]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4406:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4407:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4408:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4406]], i64 [[TMP4407]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4409:%.*]] = extractvalue { i64, i1 } [[TMP4408]], 0
// CHECK-NEXT:    [[TMP4410:%.*]] = extractvalue { i64, i1 } [[TMP4408]], 1
// CHECK-NEXT:    [[TMP4411:%.*]] = select i1 [[TMP4410]], i64 [[TMP4406]], i64 [[TMP4409]]
// CHECK-NEXT:    store i64 [[TMP4411]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4412:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4413:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4414:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4412]], i64 [[TMP4413]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4415:%.*]] = extractvalue { i64, i1 } [[TMP4414]], 0
// CHECK-NEXT:    [[TMP4416:%.*]] = extractvalue { i64, i1 } [[TMP4414]], 1
// CHECK-NEXT:    br i1 [[TMP4416]], label [[ULLX_ATOMIC_EXIT429:%.*]], label [[ULLX_ATOMIC_CONT430:%.*]]
// CHECK:       ullx.atomic.cont430:
// CHECK-NEXT:    store i64 [[TMP4415]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT429]]
// CHECK:       ullx.atomic.exit429:
// CHECK-NEXT:    [[TMP4417:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4418:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4419:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4417]], i64 [[TMP4418]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4420:%.*]] = extractvalue { i64, i1 } [[TMP4419]], 0
// CHECK-NEXT:    [[TMP4421:%.*]] = extractvalue { i64, i1 } [[TMP4419]], 1
// CHECK-NEXT:    br i1 [[TMP4421]], label [[ULLX_ATOMIC_EXIT431:%.*]], label [[ULLX_ATOMIC_CONT432:%.*]]
// CHECK:       ullx.atomic.cont432:
// CHECK-NEXT:    store i64 [[TMP4420]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT431]]
// CHECK:       ullx.atomic.exit431:
// CHECK-NEXT:    [[TMP4422:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4423:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4424:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4422]], i64 [[TMP4423]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4425:%.*]] = extractvalue { i64, i1 } [[TMP4424]], 1
// CHECK-NEXT:    [[TMP4426:%.*]] = zext i1 [[TMP4425]] to i64
// CHECK-NEXT:    store i64 [[TMP4426]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4427:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4428:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4429:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4427]], i64 [[TMP4428]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4430:%.*]] = extractvalue { i64, i1 } [[TMP4429]], 1
// CHECK-NEXT:    [[TMP4431:%.*]] = zext i1 [[TMP4430]] to i64
// CHECK-NEXT:    store i64 [[TMP4431]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4432:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4433:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4434:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4432]], i64 [[TMP4433]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4435:%.*]] = extractvalue { i64, i1 } [[TMP4434]], 0
// CHECK-NEXT:    [[TMP4436:%.*]] = extractvalue { i64, i1 } [[TMP4434]], 1
// CHECK-NEXT:    br i1 [[TMP4436]], label [[ULLX_ATOMIC_EXIT433:%.*]], label [[ULLX_ATOMIC_CONT434:%.*]]
// CHECK:       ullx.atomic.cont434:
// CHECK-NEXT:    store i64 [[TMP4435]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT433]]
// CHECK:       ullx.atomic.exit433:
// CHECK-NEXT:    [[TMP4437:%.*]] = extractvalue { i64, i1 } [[TMP4434]], 1
// CHECK-NEXT:    [[TMP4438:%.*]] = zext i1 [[TMP4437]] to i64
// CHECK-NEXT:    store i64 [[TMP4438]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4439:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4440:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4441:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4439]], i64 [[TMP4440]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP4442:%.*]] = extractvalue { i64, i1 } [[TMP4441]], 0
// CHECK-NEXT:    [[TMP4443:%.*]] = extractvalue { i64, i1 } [[TMP4441]], 1
// CHECK-NEXT:    br i1 [[TMP4443]], label [[ULLX_ATOMIC_EXIT435:%.*]], label [[ULLX_ATOMIC_CONT436:%.*]]
// CHECK:       ullx.atomic.cont436:
// CHECK-NEXT:    store i64 [[TMP4442]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT435]]
// CHECK:       ullx.atomic.exit435:
// CHECK-NEXT:    [[TMP4444:%.*]] = extractvalue { i64, i1 } [[TMP4441]], 1
// CHECK-NEXT:    [[TMP4445:%.*]] = zext i1 [[TMP4444]] to i64
// CHECK-NEXT:    store i64 [[TMP4445]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4446:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4447:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4446]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4447]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4448:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4449:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4448]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4449]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4450:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4451:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4450]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4451]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4452:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4453:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4452]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP4453]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4454:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4455:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4456:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4454]], i64 [[TMP4455]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4457:%.*]] = extractvalue { i64, i1 } [[TMP4456]], 0
// CHECK-NEXT:    store i64 [[TMP4457]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4458:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4459:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4460:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4458]], i64 [[TMP4459]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4461:%.*]] = extractvalue { i64, i1 } [[TMP4460]], 0
// CHECK-NEXT:    store i64 [[TMP4461]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4462:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4463:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4462]] monotonic, align 8
// CHECK-NEXT:    [[TMP4464:%.*]] = icmp ugt i64 [[TMP4463]], [[TMP4462]]
// CHECK-NEXT:    [[TMP4465:%.*]] = select i1 [[TMP4464]], i64 [[TMP4462]], i64 [[TMP4463]]
// CHECK-NEXT:    store i64 [[TMP4465]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4466:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4467:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4466]] monotonic, align 8
// CHECK-NEXT:    [[TMP4468:%.*]] = icmp ult i64 [[TMP4467]], [[TMP4466]]
// CHECK-NEXT:    [[TMP4469:%.*]] = select i1 [[TMP4468]], i64 [[TMP4466]], i64 [[TMP4467]]
// CHECK-NEXT:    store i64 [[TMP4469]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4470:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4471:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4470]] monotonic, align 8
// CHECK-NEXT:    [[TMP4472:%.*]] = icmp ult i64 [[TMP4471]], [[TMP4470]]
// CHECK-NEXT:    [[TMP4473:%.*]] = select i1 [[TMP4472]], i64 [[TMP4470]], i64 [[TMP4471]]
// CHECK-NEXT:    store i64 [[TMP4473]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4474:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4475:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4474]] monotonic, align 8
// CHECK-NEXT:    [[TMP4476:%.*]] = icmp ugt i64 [[TMP4475]], [[TMP4474]]
// CHECK-NEXT:    [[TMP4477:%.*]] = select i1 [[TMP4476]], i64 [[TMP4474]], i64 [[TMP4475]]
// CHECK-NEXT:    store i64 [[TMP4477]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4478:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4479:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4480:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4478]], i64 [[TMP4479]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4481:%.*]] = extractvalue { i64, i1 } [[TMP4480]], 0
// CHECK-NEXT:    [[TMP4482:%.*]] = extractvalue { i64, i1 } [[TMP4480]], 1
// CHECK-NEXT:    [[TMP4483:%.*]] = select i1 [[TMP4482]], i64 [[TMP4478]], i64 [[TMP4481]]
// CHECK-NEXT:    store i64 [[TMP4483]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4484:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4485:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4486:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4484]], i64 [[TMP4485]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4487:%.*]] = extractvalue { i64, i1 } [[TMP4486]], 0
// CHECK-NEXT:    [[TMP4488:%.*]] = extractvalue { i64, i1 } [[TMP4486]], 1
// CHECK-NEXT:    [[TMP4489:%.*]] = select i1 [[TMP4488]], i64 [[TMP4484]], i64 [[TMP4487]]
// CHECK-NEXT:    store i64 [[TMP4489]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4490:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4491:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4492:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4490]], i64 [[TMP4491]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4493:%.*]] = extractvalue { i64, i1 } [[TMP4492]], 0
// CHECK-NEXT:    [[TMP4494:%.*]] = extractvalue { i64, i1 } [[TMP4492]], 1
// CHECK-NEXT:    br i1 [[TMP4494]], label [[ULLX_ATOMIC_EXIT437:%.*]], label [[ULLX_ATOMIC_CONT438:%.*]]
// CHECK:       ullx.atomic.cont438:
// CHECK-NEXT:    store i64 [[TMP4493]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT437]]
// CHECK:       ullx.atomic.exit437:
// CHECK-NEXT:    [[TMP4495:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4496:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4497:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4495]], i64 [[TMP4496]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4498:%.*]] = extractvalue { i64, i1 } [[TMP4497]], 0
// CHECK-NEXT:    [[TMP4499:%.*]] = extractvalue { i64, i1 } [[TMP4497]], 1
// CHECK-NEXT:    br i1 [[TMP4499]], label [[ULLX_ATOMIC_EXIT439:%.*]], label [[ULLX_ATOMIC_CONT440:%.*]]
// CHECK:       ullx.atomic.cont440:
// CHECK-NEXT:    store i64 [[TMP4498]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT439]]
// CHECK:       ullx.atomic.exit439:
// CHECK-NEXT:    [[TMP4500:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4501:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4502:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4500]], i64 [[TMP4501]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4503:%.*]] = extractvalue { i64, i1 } [[TMP4502]], 1
// CHECK-NEXT:    [[TMP4504:%.*]] = zext i1 [[TMP4503]] to i64
// CHECK-NEXT:    store i64 [[TMP4504]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4505:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4506:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4507:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4505]], i64 [[TMP4506]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4508:%.*]] = extractvalue { i64, i1 } [[TMP4507]], 1
// CHECK-NEXT:    [[TMP4509:%.*]] = zext i1 [[TMP4508]] to i64
// CHECK-NEXT:    store i64 [[TMP4509]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4510:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4511:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4512:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4510]], i64 [[TMP4511]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4513:%.*]] = extractvalue { i64, i1 } [[TMP4512]], 0
// CHECK-NEXT:    [[TMP4514:%.*]] = extractvalue { i64, i1 } [[TMP4512]], 1
// CHECK-NEXT:    br i1 [[TMP4514]], label [[ULLX_ATOMIC_EXIT441:%.*]], label [[ULLX_ATOMIC_CONT442:%.*]]
// CHECK:       ullx.atomic.cont442:
// CHECK-NEXT:    store i64 [[TMP4513]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT441]]
// CHECK:       ullx.atomic.exit441:
// CHECK-NEXT:    [[TMP4515:%.*]] = extractvalue { i64, i1 } [[TMP4512]], 1
// CHECK-NEXT:    [[TMP4516:%.*]] = zext i1 [[TMP4515]] to i64
// CHECK-NEXT:    store i64 [[TMP4516]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4517:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4518:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4519:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4517]], i64 [[TMP4518]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP4520:%.*]] = extractvalue { i64, i1 } [[TMP4519]], 0
// CHECK-NEXT:    [[TMP4521:%.*]] = extractvalue { i64, i1 } [[TMP4519]], 1
// CHECK-NEXT:    br i1 [[TMP4521]], label [[ULLX_ATOMIC_EXIT443:%.*]], label [[ULLX_ATOMIC_CONT444:%.*]]
// CHECK:       ullx.atomic.cont444:
// CHECK-NEXT:    store i64 [[TMP4520]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT443]]
// CHECK:       ullx.atomic.exit443:
// CHECK-NEXT:    [[TMP4522:%.*]] = extractvalue { i64, i1 } [[TMP4519]], 1
// CHECK-NEXT:    [[TMP4523:%.*]] = zext i1 [[TMP4522]] to i64
// CHECK-NEXT:    store i64 [[TMP4523]], ptr [[ULLR]], align 8
// CHECK-NEXT:    [[TMP4524:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4525:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4524]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4525]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4526:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4527:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4526]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4527]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4528:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4529:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4528]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4529]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4530:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4531:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4530]] release, align 8
// CHECK-NEXT:    store i64 [[TMP4531]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4532:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4533:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4534:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4532]], i64 [[TMP4533]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4535:%.*]] = extractvalue { i64, i1 } [[TMP4534]], 0
// CHECK-NEXT:    store i64 [[TMP4535]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4536:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4537:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4538:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4536]], i64 [[TMP4537]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4539:%.*]] = extractvalue { i64, i1 } [[TMP4538]], 0
// CHECK-NEXT:    store i64 [[TMP4539]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4540:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4541:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4540]] release, align 8
// CHECK-NEXT:    [[TMP4542:%.*]] = icmp ugt i64 [[TMP4541]], [[TMP4540]]
// CHECK-NEXT:    [[TMP4543:%.*]] = select i1 [[TMP4542]], i64 [[TMP4540]], i64 [[TMP4541]]
// CHECK-NEXT:    store i64 [[TMP4543]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4544:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4545:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4544]] release, align 8
// CHECK-NEXT:    [[TMP4546:%.*]] = icmp ult i64 [[TMP4545]], [[TMP4544]]
// CHECK-NEXT:    [[TMP4547:%.*]] = select i1 [[TMP4546]], i64 [[TMP4544]], i64 [[TMP4545]]
// CHECK-NEXT:    store i64 [[TMP4547]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4548:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4549:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4548]] release, align 8
// CHECK-NEXT:    [[TMP4550:%.*]] = icmp ult i64 [[TMP4549]], [[TMP4548]]
// CHECK-NEXT:    [[TMP4551:%.*]] = select i1 [[TMP4550]], i64 [[TMP4548]], i64 [[TMP4549]]
// CHECK-NEXT:    store i64 [[TMP4551]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4552:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4553:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4552]] release, align 8
// CHECK-NEXT:    [[TMP4554:%.*]] = icmp ugt i64 [[TMP4553]], [[TMP4552]]
// CHECK-NEXT:    [[TMP4555:%.*]] = select i1 [[TMP4554]], i64 [[TMP4552]], i64 [[TMP4553]]
// CHECK-NEXT:    store i64 [[TMP4555]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4556:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4557:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4558:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4556]], i64 [[TMP4557]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4559:%.*]] = extractvalue { i64, i1 } [[TMP4558]], 0
// CHECK-NEXT:    [[TMP4560:%.*]] = extractvalue { i64, i1 } [[TMP4558]], 1
// CHECK-NEXT:    [[TMP4561:%.*]] = select i1 [[TMP4560]], i64 [[TMP4556]], i64 [[TMP4559]]
// CHECK-NEXT:    store i64 [[TMP4561]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4562:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4563:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4564:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4562]], i64 [[TMP4563]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4565:%.*]] = extractvalue { i64, i1 } [[TMP4564]], 0
// CHECK-NEXT:    [[TMP4566:%.*]] = extractvalue { i64, i1 } [[TMP4564]], 1
// CHECK-NEXT:    [[TMP4567:%.*]] = select i1 [[TMP4566]], i64 [[TMP4562]], i64 [[TMP4565]]
// CHECK-NEXT:    store i64 [[TMP4567]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4568:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4569:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4570:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4568]], i64 [[TMP4569]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4571:%.*]] = extractvalue { i64, i1 } [[TMP4570]], 0
// CHECK-NEXT:    [[TMP4572:%.*]] = extractvalue { i64, i1 } [[TMP4570]], 1
// CHECK-NEXT:    br i1 [[TMP4572]], label [[ULLX_ATOMIC_EXIT445:%.*]], label [[ULLX_ATOMIC_CONT446:%.*]]
// CHECK:       ullx.atomic.cont446:
// CHECK-NEXT:    store i64 [[TMP4571]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT445]]
// CHECK:       ullx.atomic.exit445:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4573:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4574:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4575:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4573]], i64 [[TMP4574]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4576:%.*]] = extractvalue { i64, i1 } [[TMP4575]], 0
// CHECK-NEXT:    [[TMP4577:%.*]] = extractvalue { i64, i1 } [[TMP4575]], 1
// CHECK-NEXT:    br i1 [[TMP4577]], label [[ULLX_ATOMIC_EXIT447:%.*]], label [[ULLX_ATOMIC_CONT448:%.*]]
// CHECK:       ullx.atomic.cont448:
// CHECK-NEXT:    store i64 [[TMP4576]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT447]]
// CHECK:       ullx.atomic.exit447:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4578:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4579:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4580:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4578]], i64 [[TMP4579]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4581:%.*]] = extractvalue { i64, i1 } [[TMP4580]], 1
// CHECK-NEXT:    [[TMP4582:%.*]] = zext i1 [[TMP4581]] to i64
// CHECK-NEXT:    store i64 [[TMP4582]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4583:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4584:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4585:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4583]], i64 [[TMP4584]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4586:%.*]] = extractvalue { i64, i1 } [[TMP4585]], 1
// CHECK-NEXT:    [[TMP4587:%.*]] = zext i1 [[TMP4586]] to i64
// CHECK-NEXT:    store i64 [[TMP4587]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4588:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4589:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4590:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4588]], i64 [[TMP4589]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4591:%.*]] = extractvalue { i64, i1 } [[TMP4590]], 0
// CHECK-NEXT:    [[TMP4592:%.*]] = extractvalue { i64, i1 } [[TMP4590]], 1
// CHECK-NEXT:    br i1 [[TMP4592]], label [[ULLX_ATOMIC_EXIT449:%.*]], label [[ULLX_ATOMIC_CONT450:%.*]]
// CHECK:       ullx.atomic.cont450:
// CHECK-NEXT:    store i64 [[TMP4591]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT449]]
// CHECK:       ullx.atomic.exit449:
// CHECK-NEXT:    [[TMP4593:%.*]] = extractvalue { i64, i1 } [[TMP4590]], 1
// CHECK-NEXT:    [[TMP4594:%.*]] = zext i1 [[TMP4593]] to i64
// CHECK-NEXT:    store i64 [[TMP4594]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4595:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4596:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4597:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4595]], i64 [[TMP4596]] release monotonic, align 8
// CHECK-NEXT:    [[TMP4598:%.*]] = extractvalue { i64, i1 } [[TMP4597]], 0
// CHECK-NEXT:    [[TMP4599:%.*]] = extractvalue { i64, i1 } [[TMP4597]], 1
// CHECK-NEXT:    br i1 [[TMP4599]], label [[ULLX_ATOMIC_EXIT451:%.*]], label [[ULLX_ATOMIC_CONT452:%.*]]
// CHECK:       ullx.atomic.cont452:
// CHECK-NEXT:    store i64 [[TMP4598]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT451]]
// CHECK:       ullx.atomic.exit451:
// CHECK-NEXT:    [[TMP4600:%.*]] = extractvalue { i64, i1 } [[TMP4597]], 1
// CHECK-NEXT:    [[TMP4601:%.*]] = zext i1 [[TMP4600]] to i64
// CHECK-NEXT:    store i64 [[TMP4601]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4602:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4603:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4602]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4603]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4604:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4605:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4604]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4605]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4606:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4607:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4606]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4607]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4608:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4609:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4608]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP4609]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4610:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4611:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4612:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4610]], i64 [[TMP4611]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4613:%.*]] = extractvalue { i64, i1 } [[TMP4612]], 0
// CHECK-NEXT:    store i64 [[TMP4613]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4614:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4615:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4616:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4614]], i64 [[TMP4615]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4617:%.*]] = extractvalue { i64, i1 } [[TMP4616]], 0
// CHECK-NEXT:    store i64 [[TMP4617]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4618:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4619:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4618]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4620:%.*]] = icmp ugt i64 [[TMP4619]], [[TMP4618]]
// CHECK-NEXT:    [[TMP4621:%.*]] = select i1 [[TMP4620]], i64 [[TMP4618]], i64 [[TMP4619]]
// CHECK-NEXT:    store i64 [[TMP4621]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4622:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4623:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4622]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4624:%.*]] = icmp ult i64 [[TMP4623]], [[TMP4622]]
// CHECK-NEXT:    [[TMP4625:%.*]] = select i1 [[TMP4624]], i64 [[TMP4622]], i64 [[TMP4623]]
// CHECK-NEXT:    store i64 [[TMP4625]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4626:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4627:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP4626]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4628:%.*]] = icmp ult i64 [[TMP4627]], [[TMP4626]]
// CHECK-NEXT:    [[TMP4629:%.*]] = select i1 [[TMP4628]], i64 [[TMP4626]], i64 [[TMP4627]]
// CHECK-NEXT:    store i64 [[TMP4629]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4630:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4631:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP4630]] seq_cst, align 8
// CHECK-NEXT:    [[TMP4632:%.*]] = icmp ugt i64 [[TMP4631]], [[TMP4630]]
// CHECK-NEXT:    [[TMP4633:%.*]] = select i1 [[TMP4632]], i64 [[TMP4630]], i64 [[TMP4631]]
// CHECK-NEXT:    store i64 [[TMP4633]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4634:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4635:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4636:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4634]], i64 [[TMP4635]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4637:%.*]] = extractvalue { i64, i1 } [[TMP4636]], 0
// CHECK-NEXT:    [[TMP4638:%.*]] = extractvalue { i64, i1 } [[TMP4636]], 1
// CHECK-NEXT:    [[TMP4639:%.*]] = select i1 [[TMP4638]], i64 [[TMP4634]], i64 [[TMP4637]]
// CHECK-NEXT:    store i64 [[TMP4639]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4640:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4641:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4642:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4640]], i64 [[TMP4641]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4643:%.*]] = extractvalue { i64, i1 } [[TMP4642]], 0
// CHECK-NEXT:    [[TMP4644:%.*]] = extractvalue { i64, i1 } [[TMP4642]], 1
// CHECK-NEXT:    [[TMP4645:%.*]] = select i1 [[TMP4644]], i64 [[TMP4640]], i64 [[TMP4643]]
// CHECK-NEXT:    store i64 [[TMP4645]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4646:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4647:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4648:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4646]], i64 [[TMP4647]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4649:%.*]] = extractvalue { i64, i1 } [[TMP4648]], 0
// CHECK-NEXT:    [[TMP4650:%.*]] = extractvalue { i64, i1 } [[TMP4648]], 1
// CHECK-NEXT:    br i1 [[TMP4650]], label [[ULLX_ATOMIC_EXIT453:%.*]], label [[ULLX_ATOMIC_CONT454:%.*]]
// CHECK:       ullx.atomic.cont454:
// CHECK-NEXT:    store i64 [[TMP4649]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT453]]
// CHECK:       ullx.atomic.exit453:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4651:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4652:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4653:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4651]], i64 [[TMP4652]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4654:%.*]] = extractvalue { i64, i1 } [[TMP4653]], 0
// CHECK-NEXT:    [[TMP4655:%.*]] = extractvalue { i64, i1 } [[TMP4653]], 1
// CHECK-NEXT:    br i1 [[TMP4655]], label [[ULLX_ATOMIC_EXIT455:%.*]], label [[ULLX_ATOMIC_CONT456:%.*]]
// CHECK:       ullx.atomic.cont456:
// CHECK-NEXT:    store i64 [[TMP4654]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT455]]
// CHECK:       ullx.atomic.exit455:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4656:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4657:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4658:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4656]], i64 [[TMP4657]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4659:%.*]] = extractvalue { i64, i1 } [[TMP4658]], 1
// CHECK-NEXT:    [[TMP4660:%.*]] = zext i1 [[TMP4659]] to i64
// CHECK-NEXT:    store i64 [[TMP4660]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4661:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4662:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4663:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4661]], i64 [[TMP4662]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4664:%.*]] = extractvalue { i64, i1 } [[TMP4663]], 1
// CHECK-NEXT:    [[TMP4665:%.*]] = zext i1 [[TMP4664]] to i64
// CHECK-NEXT:    store i64 [[TMP4665]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4666:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4667:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4668:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4666]], i64 [[TMP4667]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4669:%.*]] = extractvalue { i64, i1 } [[TMP4668]], 0
// CHECK-NEXT:    [[TMP4670:%.*]] = extractvalue { i64, i1 } [[TMP4668]], 1
// CHECK-NEXT:    br i1 [[TMP4670]], label [[ULLX_ATOMIC_EXIT457:%.*]], label [[ULLX_ATOMIC_CONT458:%.*]]
// CHECK:       ullx.atomic.cont458:
// CHECK-NEXT:    store i64 [[TMP4669]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT457]]
// CHECK:       ullx.atomic.exit457:
// CHECK-NEXT:    [[TMP4671:%.*]] = extractvalue { i64, i1 } [[TMP4668]], 1
// CHECK-NEXT:    [[TMP4672:%.*]] = zext i1 [[TMP4671]] to i64
// CHECK-NEXT:    store i64 [[TMP4672]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4673:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP4674:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP4675:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4673]], i64 [[TMP4674]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP4676:%.*]] = extractvalue { i64, i1 } [[TMP4675]], 0
// CHECK-NEXT:    [[TMP4677:%.*]] = extractvalue { i64, i1 } [[TMP4675]], 1
// CHECK-NEXT:    br i1 [[TMP4677]], label [[ULLX_ATOMIC_EXIT459:%.*]], label [[ULLX_ATOMIC_CONT460:%.*]]
// CHECK:       ullx.atomic.cont460:
// CHECK-NEXT:    store i64 [[TMP4676]], ptr [[ULLV]], align 8
// CHECK-NEXT:    br label [[ULLX_ATOMIC_EXIT459]]
// CHECK:       ullx.atomic.exit459:
// CHECK-NEXT:    [[TMP4678:%.*]] = extractvalue { i64, i1 } [[TMP4675]], 1
// CHECK-NEXT:    [[TMP4679:%.*]] = zext i1 [[TMP4678]] to i64
// CHECK-NEXT:    store i64 [[TMP4679]], ptr [[ULLR]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4680:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4681:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4680]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP4681]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4682:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4683:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4682]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP4683]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4684:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4685:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4684]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP4685]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4686:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4687:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4686]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP4687]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4688:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4689:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4690:%.*]] = bitcast float [[TMP4688]] to i32
// CHECK-NEXT:    [[TMP4691:%.*]] = bitcast float [[TMP4689]] to i32
// CHECK-NEXT:    [[TMP4692:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4690]], i32 [[TMP4691]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4693:%.*]] = extractvalue { i32, i1 } [[TMP4692]], 0
// CHECK-NEXT:    [[TMP4694:%.*]] = bitcast i32 [[TMP4693]] to float
// CHECK-NEXT:    store float [[TMP4694]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4695:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4696:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4697:%.*]] = bitcast float [[TMP4695]] to i32
// CHECK-NEXT:    [[TMP4698:%.*]] = bitcast float [[TMP4696]] to i32
// CHECK-NEXT:    [[TMP4699:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4697]], i32 [[TMP4698]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4700:%.*]] = extractvalue { i32, i1 } [[TMP4699]], 0
// CHECK-NEXT:    [[TMP4701:%.*]] = bitcast i32 [[TMP4700]] to float
// CHECK-NEXT:    store float [[TMP4701]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4702:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4703:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4702]] monotonic, align 4
// CHECK-NEXT:    [[TMP4704:%.*]] = fcmp ogt float [[TMP4703]], [[TMP4702]]
// CHECK-NEXT:    [[TMP4705:%.*]] = select i1 [[TMP4704]], float [[TMP4702]], float [[TMP4703]]
// CHECK-NEXT:    store float [[TMP4705]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4706:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4707:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4706]] monotonic, align 4
// CHECK-NEXT:    [[TMP4708:%.*]] = fcmp olt float [[TMP4707]], [[TMP4706]]
// CHECK-NEXT:    [[TMP4709:%.*]] = select i1 [[TMP4708]], float [[TMP4706]], float [[TMP4707]]
// CHECK-NEXT:    store float [[TMP4709]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4710:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4711:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4710]] monotonic, align 4
// CHECK-NEXT:    [[TMP4712:%.*]] = fcmp olt float [[TMP4711]], [[TMP4710]]
// CHECK-NEXT:    [[TMP4713:%.*]] = select i1 [[TMP4712]], float [[TMP4710]], float [[TMP4711]]
// CHECK-NEXT:    store float [[TMP4713]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4714:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4715:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4714]] monotonic, align 4
// CHECK-NEXT:    [[TMP4716:%.*]] = fcmp ogt float [[TMP4715]], [[TMP4714]]
// CHECK-NEXT:    [[TMP4717:%.*]] = select i1 [[TMP4716]], float [[TMP4714]], float [[TMP4715]]
// CHECK-NEXT:    store float [[TMP4717]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4718:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4719:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4720:%.*]] = bitcast float [[TMP4718]] to i32
// CHECK-NEXT:    [[TMP4721:%.*]] = bitcast float [[TMP4719]] to i32
// CHECK-NEXT:    [[TMP4722:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4720]], i32 [[TMP4721]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4723:%.*]] = extractvalue { i32, i1 } [[TMP4722]], 0
// CHECK-NEXT:    [[TMP4724:%.*]] = bitcast i32 [[TMP4723]] to float
// CHECK-NEXT:    [[TMP4725:%.*]] = extractvalue { i32, i1 } [[TMP4722]], 1
// CHECK-NEXT:    [[TMP4726:%.*]] = select i1 [[TMP4725]], float [[TMP4718]], float [[TMP4724]]
// CHECK-NEXT:    store float [[TMP4726]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4727:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4728:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4729:%.*]] = bitcast float [[TMP4727]] to i32
// CHECK-NEXT:    [[TMP4730:%.*]] = bitcast float [[TMP4728]] to i32
// CHECK-NEXT:    [[TMP4731:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4729]], i32 [[TMP4730]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4732:%.*]] = extractvalue { i32, i1 } [[TMP4731]], 0
// CHECK-NEXT:    [[TMP4733:%.*]] = bitcast i32 [[TMP4732]] to float
// CHECK-NEXT:    [[TMP4734:%.*]] = extractvalue { i32, i1 } [[TMP4731]], 1
// CHECK-NEXT:    [[TMP4735:%.*]] = select i1 [[TMP4734]], float [[TMP4727]], float [[TMP4733]]
// CHECK-NEXT:    store float [[TMP4735]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4736:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4737:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4738:%.*]] = bitcast float [[TMP4736]] to i32
// CHECK-NEXT:    [[TMP4739:%.*]] = bitcast float [[TMP4737]] to i32
// CHECK-NEXT:    [[TMP4740:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4738]], i32 [[TMP4739]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4741:%.*]] = extractvalue { i32, i1 } [[TMP4740]], 0
// CHECK-NEXT:    [[TMP4742:%.*]] = bitcast i32 [[TMP4741]] to float
// CHECK-NEXT:    [[TMP4743:%.*]] = extractvalue { i32, i1 } [[TMP4740]], 1
// CHECK-NEXT:    br i1 [[TMP4743]], label [[FX_ATOMIC_EXIT:%.*]], label [[FX_ATOMIC_CONT:%.*]]
// CHECK:       fx.atomic.cont:
// CHECK-NEXT:    store float [[TMP4742]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT]]
// CHECK:       fx.atomic.exit:
// CHECK-NEXT:    [[TMP4744:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4745:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4746:%.*]] = bitcast float [[TMP4744]] to i32
// CHECK-NEXT:    [[TMP4747:%.*]] = bitcast float [[TMP4745]] to i32
// CHECK-NEXT:    [[TMP4748:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4746]], i32 [[TMP4747]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4749:%.*]] = extractvalue { i32, i1 } [[TMP4748]], 0
// CHECK-NEXT:    [[TMP4750:%.*]] = bitcast i32 [[TMP4749]] to float
// CHECK-NEXT:    [[TMP4751:%.*]] = extractvalue { i32, i1 } [[TMP4748]], 1
// CHECK-NEXT:    br i1 [[TMP4751]], label [[FX_ATOMIC_EXIT461:%.*]], label [[FX_ATOMIC_CONT462:%.*]]
// CHECK:       fx.atomic.cont462:
// CHECK-NEXT:    store float [[TMP4750]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT461]]
// CHECK:       fx.atomic.exit461:
// CHECK-NEXT:    [[TMP4752:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4753:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4754:%.*]] = bitcast float [[TMP4752]] to i32
// CHECK-NEXT:    [[TMP4755:%.*]] = bitcast float [[TMP4753]] to i32
// CHECK-NEXT:    [[TMP4756:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4754]], i32 [[TMP4755]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4757:%.*]] = extractvalue { i32, i1 } [[TMP4756]], 1
// CHECK-NEXT:    [[TMP4758:%.*]] = sext i1 [[TMP4757]] to i32
// CHECK-NEXT:    store i32 [[TMP4758]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4759:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4760:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4761:%.*]] = bitcast float [[TMP4759]] to i32
// CHECK-NEXT:    [[TMP4762:%.*]] = bitcast float [[TMP4760]] to i32
// CHECK-NEXT:    [[TMP4763:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4761]], i32 [[TMP4762]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4764:%.*]] = extractvalue { i32, i1 } [[TMP4763]], 1
// CHECK-NEXT:    [[TMP4765:%.*]] = sext i1 [[TMP4764]] to i32
// CHECK-NEXT:    store i32 [[TMP4765]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4766:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4767:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4768:%.*]] = bitcast float [[TMP4766]] to i32
// CHECK-NEXT:    [[TMP4769:%.*]] = bitcast float [[TMP4767]] to i32
// CHECK-NEXT:    [[TMP4770:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4768]], i32 [[TMP4769]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4771:%.*]] = extractvalue { i32, i1 } [[TMP4770]], 0
// CHECK-NEXT:    [[TMP4772:%.*]] = bitcast i32 [[TMP4771]] to float
// CHECK-NEXT:    [[TMP4773:%.*]] = extractvalue { i32, i1 } [[TMP4770]], 1
// CHECK-NEXT:    br i1 [[TMP4773]], label [[FX_ATOMIC_EXIT463:%.*]], label [[FX_ATOMIC_CONT464:%.*]]
// CHECK:       fx.atomic.cont464:
// CHECK-NEXT:    store float [[TMP4772]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT463]]
// CHECK:       fx.atomic.exit463:
// CHECK-NEXT:    [[TMP4774:%.*]] = extractvalue { i32, i1 } [[TMP4770]], 1
// CHECK-NEXT:    [[TMP4775:%.*]] = sext i1 [[TMP4774]] to i32
// CHECK-NEXT:    store i32 [[TMP4775]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4776:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4777:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4778:%.*]] = bitcast float [[TMP4776]] to i32
// CHECK-NEXT:    [[TMP4779:%.*]] = bitcast float [[TMP4777]] to i32
// CHECK-NEXT:    [[TMP4780:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4778]], i32 [[TMP4779]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP4781:%.*]] = extractvalue { i32, i1 } [[TMP4780]], 0
// CHECK-NEXT:    [[TMP4782:%.*]] = bitcast i32 [[TMP4781]] to float
// CHECK-NEXT:    [[TMP4783:%.*]] = extractvalue { i32, i1 } [[TMP4780]], 1
// CHECK-NEXT:    br i1 [[TMP4783]], label [[FX_ATOMIC_EXIT465:%.*]], label [[FX_ATOMIC_CONT466:%.*]]
// CHECK:       fx.atomic.cont466:
// CHECK-NEXT:    store float [[TMP4782]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT465]]
// CHECK:       fx.atomic.exit465:
// CHECK-NEXT:    [[TMP4784:%.*]] = extractvalue { i32, i1 } [[TMP4780]], 1
// CHECK-NEXT:    [[TMP4785:%.*]] = sext i1 [[TMP4784]] to i32
// CHECK-NEXT:    store i32 [[TMP4785]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4786:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4787:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4786]] acq_rel, align 4
// CHECK-NEXT:    store float [[TMP4787]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4788:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4789:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4788]] acq_rel, align 4
// CHECK-NEXT:    store float [[TMP4789]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4790:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4791:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4790]] acq_rel, align 4
// CHECK-NEXT:    store float [[TMP4791]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4792:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4793:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4792]] acq_rel, align 4
// CHECK-NEXT:    store float [[TMP4793]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4794:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4795:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4796:%.*]] = bitcast float [[TMP4794]] to i32
// CHECK-NEXT:    [[TMP4797:%.*]] = bitcast float [[TMP4795]] to i32
// CHECK-NEXT:    [[TMP4798:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4796]], i32 [[TMP4797]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4799:%.*]] = extractvalue { i32, i1 } [[TMP4798]], 0
// CHECK-NEXT:    [[TMP4800:%.*]] = bitcast i32 [[TMP4799]] to float
// CHECK-NEXT:    store float [[TMP4800]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4801:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4802:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4803:%.*]] = bitcast float [[TMP4801]] to i32
// CHECK-NEXT:    [[TMP4804:%.*]] = bitcast float [[TMP4802]] to i32
// CHECK-NEXT:    [[TMP4805:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4803]], i32 [[TMP4804]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4806:%.*]] = extractvalue { i32, i1 } [[TMP4805]], 0
// CHECK-NEXT:    [[TMP4807:%.*]] = bitcast i32 [[TMP4806]] to float
// CHECK-NEXT:    store float [[TMP4807]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4808:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4809:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4808]] acq_rel, align 4
// CHECK-NEXT:    [[TMP4810:%.*]] = fcmp ogt float [[TMP4809]], [[TMP4808]]
// CHECK-NEXT:    [[TMP4811:%.*]] = select i1 [[TMP4810]], float [[TMP4808]], float [[TMP4809]]
// CHECK-NEXT:    store float [[TMP4811]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4812:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4813:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4812]] acq_rel, align 4
// CHECK-NEXT:    [[TMP4814:%.*]] = fcmp olt float [[TMP4813]], [[TMP4812]]
// CHECK-NEXT:    [[TMP4815:%.*]] = select i1 [[TMP4814]], float [[TMP4812]], float [[TMP4813]]
// CHECK-NEXT:    store float [[TMP4815]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4816:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4817:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4816]] acq_rel, align 4
// CHECK-NEXT:    [[TMP4818:%.*]] = fcmp olt float [[TMP4817]], [[TMP4816]]
// CHECK-NEXT:    [[TMP4819:%.*]] = select i1 [[TMP4818]], float [[TMP4816]], float [[TMP4817]]
// CHECK-NEXT:    store float [[TMP4819]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4820:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4821:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4820]] acq_rel, align 4
// CHECK-NEXT:    [[TMP4822:%.*]] = fcmp ogt float [[TMP4821]], [[TMP4820]]
// CHECK-NEXT:    [[TMP4823:%.*]] = select i1 [[TMP4822]], float [[TMP4820]], float [[TMP4821]]
// CHECK-NEXT:    store float [[TMP4823]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4824:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4825:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4826:%.*]] = bitcast float [[TMP4824]] to i32
// CHECK-NEXT:    [[TMP4827:%.*]] = bitcast float [[TMP4825]] to i32
// CHECK-NEXT:    [[TMP4828:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4826]], i32 [[TMP4827]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4829:%.*]] = extractvalue { i32, i1 } [[TMP4828]], 0
// CHECK-NEXT:    [[TMP4830:%.*]] = bitcast i32 [[TMP4829]] to float
// CHECK-NEXT:    [[TMP4831:%.*]] = extractvalue { i32, i1 } [[TMP4828]], 1
// CHECK-NEXT:    [[TMP4832:%.*]] = select i1 [[TMP4831]], float [[TMP4824]], float [[TMP4830]]
// CHECK-NEXT:    store float [[TMP4832]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4833:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4834:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4835:%.*]] = bitcast float [[TMP4833]] to i32
// CHECK-NEXT:    [[TMP4836:%.*]] = bitcast float [[TMP4834]] to i32
// CHECK-NEXT:    [[TMP4837:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4835]], i32 [[TMP4836]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4838:%.*]] = extractvalue { i32, i1 } [[TMP4837]], 0
// CHECK-NEXT:    [[TMP4839:%.*]] = bitcast i32 [[TMP4838]] to float
// CHECK-NEXT:    [[TMP4840:%.*]] = extractvalue { i32, i1 } [[TMP4837]], 1
// CHECK-NEXT:    [[TMP4841:%.*]] = select i1 [[TMP4840]], float [[TMP4833]], float [[TMP4839]]
// CHECK-NEXT:    store float [[TMP4841]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4842:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4843:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4844:%.*]] = bitcast float [[TMP4842]] to i32
// CHECK-NEXT:    [[TMP4845:%.*]] = bitcast float [[TMP4843]] to i32
// CHECK-NEXT:    [[TMP4846:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4844]], i32 [[TMP4845]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4847:%.*]] = extractvalue { i32, i1 } [[TMP4846]], 0
// CHECK-NEXT:    [[TMP4848:%.*]] = bitcast i32 [[TMP4847]] to float
// CHECK-NEXT:    [[TMP4849:%.*]] = extractvalue { i32, i1 } [[TMP4846]], 1
// CHECK-NEXT:    br i1 [[TMP4849]], label [[FX_ATOMIC_EXIT467:%.*]], label [[FX_ATOMIC_CONT468:%.*]]
// CHECK:       fx.atomic.cont468:
// CHECK-NEXT:    store float [[TMP4848]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT467]]
// CHECK:       fx.atomic.exit467:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4850:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4851:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4852:%.*]] = bitcast float [[TMP4850]] to i32
// CHECK-NEXT:    [[TMP4853:%.*]] = bitcast float [[TMP4851]] to i32
// CHECK-NEXT:    [[TMP4854:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4852]], i32 [[TMP4853]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4855:%.*]] = extractvalue { i32, i1 } [[TMP4854]], 0
// CHECK-NEXT:    [[TMP4856:%.*]] = bitcast i32 [[TMP4855]] to float
// CHECK-NEXT:    [[TMP4857:%.*]] = extractvalue { i32, i1 } [[TMP4854]], 1
// CHECK-NEXT:    br i1 [[TMP4857]], label [[FX_ATOMIC_EXIT469:%.*]], label [[FX_ATOMIC_CONT470:%.*]]
// CHECK:       fx.atomic.cont470:
// CHECK-NEXT:    store float [[TMP4856]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT469]]
// CHECK:       fx.atomic.exit469:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4858:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4859:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4860:%.*]] = bitcast float [[TMP4858]] to i32
// CHECK-NEXT:    [[TMP4861:%.*]] = bitcast float [[TMP4859]] to i32
// CHECK-NEXT:    [[TMP4862:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4860]], i32 [[TMP4861]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4863:%.*]] = extractvalue { i32, i1 } [[TMP4862]], 1
// CHECK-NEXT:    [[TMP4864:%.*]] = sext i1 [[TMP4863]] to i32
// CHECK-NEXT:    store i32 [[TMP4864]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4865:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4866:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4867:%.*]] = bitcast float [[TMP4865]] to i32
// CHECK-NEXT:    [[TMP4868:%.*]] = bitcast float [[TMP4866]] to i32
// CHECK-NEXT:    [[TMP4869:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4867]], i32 [[TMP4868]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4870:%.*]] = extractvalue { i32, i1 } [[TMP4869]], 1
// CHECK-NEXT:    [[TMP4871:%.*]] = sext i1 [[TMP4870]] to i32
// CHECK-NEXT:    store i32 [[TMP4871]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4872:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4873:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4874:%.*]] = bitcast float [[TMP4872]] to i32
// CHECK-NEXT:    [[TMP4875:%.*]] = bitcast float [[TMP4873]] to i32
// CHECK-NEXT:    [[TMP4876:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4874]], i32 [[TMP4875]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4877:%.*]] = extractvalue { i32, i1 } [[TMP4876]], 0
// CHECK-NEXT:    [[TMP4878:%.*]] = bitcast i32 [[TMP4877]] to float
// CHECK-NEXT:    [[TMP4879:%.*]] = extractvalue { i32, i1 } [[TMP4876]], 1
// CHECK-NEXT:    br i1 [[TMP4879]], label [[FX_ATOMIC_EXIT471:%.*]], label [[FX_ATOMIC_CONT472:%.*]]
// CHECK:       fx.atomic.cont472:
// CHECK-NEXT:    store float [[TMP4878]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT471]]
// CHECK:       fx.atomic.exit471:
// CHECK-NEXT:    [[TMP4880:%.*]] = extractvalue { i32, i1 } [[TMP4876]], 1
// CHECK-NEXT:    [[TMP4881:%.*]] = sext i1 [[TMP4880]] to i32
// CHECK-NEXT:    store i32 [[TMP4881]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4882:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4883:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4884:%.*]] = bitcast float [[TMP4882]] to i32
// CHECK-NEXT:    [[TMP4885:%.*]] = bitcast float [[TMP4883]] to i32
// CHECK-NEXT:    [[TMP4886:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4884]], i32 [[TMP4885]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP4887:%.*]] = extractvalue { i32, i1 } [[TMP4886]], 0
// CHECK-NEXT:    [[TMP4888:%.*]] = bitcast i32 [[TMP4887]] to float
// CHECK-NEXT:    [[TMP4889:%.*]] = extractvalue { i32, i1 } [[TMP4886]], 1
// CHECK-NEXT:    br i1 [[TMP4889]], label [[FX_ATOMIC_EXIT473:%.*]], label [[FX_ATOMIC_CONT474:%.*]]
// CHECK:       fx.atomic.cont474:
// CHECK-NEXT:    store float [[TMP4888]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT473]]
// CHECK:       fx.atomic.exit473:
// CHECK-NEXT:    [[TMP4890:%.*]] = extractvalue { i32, i1 } [[TMP4886]], 1
// CHECK-NEXT:    [[TMP4891:%.*]] = sext i1 [[TMP4890]] to i32
// CHECK-NEXT:    store i32 [[TMP4891]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP4892:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4893:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4892]] acquire, align 4
// CHECK-NEXT:    store float [[TMP4893]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4894:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4895:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4894]] acquire, align 4
// CHECK-NEXT:    store float [[TMP4895]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4896:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4897:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4896]] acquire, align 4
// CHECK-NEXT:    store float [[TMP4897]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4898:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4899:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4898]] acquire, align 4
// CHECK-NEXT:    store float [[TMP4899]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4900:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4901:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4902:%.*]] = bitcast float [[TMP4900]] to i32
// CHECK-NEXT:    [[TMP4903:%.*]] = bitcast float [[TMP4901]] to i32
// CHECK-NEXT:    [[TMP4904:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4902]], i32 [[TMP4903]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4905:%.*]] = extractvalue { i32, i1 } [[TMP4904]], 0
// CHECK-NEXT:    [[TMP4906:%.*]] = bitcast i32 [[TMP4905]] to float
// CHECK-NEXT:    store float [[TMP4906]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4907:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4908:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4909:%.*]] = bitcast float [[TMP4907]] to i32
// CHECK-NEXT:    [[TMP4910:%.*]] = bitcast float [[TMP4908]] to i32
// CHECK-NEXT:    [[TMP4911:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4909]], i32 [[TMP4910]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4912:%.*]] = extractvalue { i32, i1 } [[TMP4911]], 0
// CHECK-NEXT:    [[TMP4913:%.*]] = bitcast i32 [[TMP4912]] to float
// CHECK-NEXT:    store float [[TMP4913]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4914:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4915:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4914]] acquire, align 4
// CHECK-NEXT:    [[TMP4916:%.*]] = fcmp ogt float [[TMP4915]], [[TMP4914]]
// CHECK-NEXT:    [[TMP4917:%.*]] = select i1 [[TMP4916]], float [[TMP4914]], float [[TMP4915]]
// CHECK-NEXT:    store float [[TMP4917]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4918:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4919:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4918]] acquire, align 4
// CHECK-NEXT:    [[TMP4920:%.*]] = fcmp olt float [[TMP4919]], [[TMP4918]]
// CHECK-NEXT:    [[TMP4921:%.*]] = select i1 [[TMP4920]], float [[TMP4918]], float [[TMP4919]]
// CHECK-NEXT:    store float [[TMP4921]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4922:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4923:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP4922]] acquire, align 4
// CHECK-NEXT:    [[TMP4924:%.*]] = fcmp olt float [[TMP4923]], [[TMP4922]]
// CHECK-NEXT:    [[TMP4925:%.*]] = select i1 [[TMP4924]], float [[TMP4922]], float [[TMP4923]]
// CHECK-NEXT:    store float [[TMP4925]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4926:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4927:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4926]] acquire, align 4
// CHECK-NEXT:    [[TMP4928:%.*]] = fcmp ogt float [[TMP4927]], [[TMP4926]]
// CHECK-NEXT:    [[TMP4929:%.*]] = select i1 [[TMP4928]], float [[TMP4926]], float [[TMP4927]]
// CHECK-NEXT:    store float [[TMP4929]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4930:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4931:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4932:%.*]] = bitcast float [[TMP4930]] to i32
// CHECK-NEXT:    [[TMP4933:%.*]] = bitcast float [[TMP4931]] to i32
// CHECK-NEXT:    [[TMP4934:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4932]], i32 [[TMP4933]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4935:%.*]] = extractvalue { i32, i1 } [[TMP4934]], 0
// CHECK-NEXT:    [[TMP4936:%.*]] = bitcast i32 [[TMP4935]] to float
// CHECK-NEXT:    [[TMP4937:%.*]] = extractvalue { i32, i1 } [[TMP4934]], 1
// CHECK-NEXT:    [[TMP4938:%.*]] = select i1 [[TMP4937]], float [[TMP4930]], float [[TMP4936]]
// CHECK-NEXT:    store float [[TMP4938]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4939:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4940:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4941:%.*]] = bitcast float [[TMP4939]] to i32
// CHECK-NEXT:    [[TMP4942:%.*]] = bitcast float [[TMP4940]] to i32
// CHECK-NEXT:    [[TMP4943:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4941]], i32 [[TMP4942]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4944:%.*]] = extractvalue { i32, i1 } [[TMP4943]], 0
// CHECK-NEXT:    [[TMP4945:%.*]] = bitcast i32 [[TMP4944]] to float
// CHECK-NEXT:    [[TMP4946:%.*]] = extractvalue { i32, i1 } [[TMP4943]], 1
// CHECK-NEXT:    [[TMP4947:%.*]] = select i1 [[TMP4946]], float [[TMP4939]], float [[TMP4945]]
// CHECK-NEXT:    store float [[TMP4947]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4948:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4949:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4950:%.*]] = bitcast float [[TMP4948]] to i32
// CHECK-NEXT:    [[TMP4951:%.*]] = bitcast float [[TMP4949]] to i32
// CHECK-NEXT:    [[TMP4952:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4950]], i32 [[TMP4951]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4953:%.*]] = extractvalue { i32, i1 } [[TMP4952]], 0
// CHECK-NEXT:    [[TMP4954:%.*]] = bitcast i32 [[TMP4953]] to float
// CHECK-NEXT:    [[TMP4955:%.*]] = extractvalue { i32, i1 } [[TMP4952]], 1
// CHECK-NEXT:    br i1 [[TMP4955]], label [[FX_ATOMIC_EXIT475:%.*]], label [[FX_ATOMIC_CONT476:%.*]]
// CHECK:       fx.atomic.cont476:
// CHECK-NEXT:    store float [[TMP4954]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT475]]
// CHECK:       fx.atomic.exit475:
// CHECK-NEXT:    [[TMP4956:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4957:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4958:%.*]] = bitcast float [[TMP4956]] to i32
// CHECK-NEXT:    [[TMP4959:%.*]] = bitcast float [[TMP4957]] to i32
// CHECK-NEXT:    [[TMP4960:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4958]], i32 [[TMP4959]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4961:%.*]] = extractvalue { i32, i1 } [[TMP4960]], 0
// CHECK-NEXT:    [[TMP4962:%.*]] = bitcast i32 [[TMP4961]] to float
// CHECK-NEXT:    [[TMP4963:%.*]] = extractvalue { i32, i1 } [[TMP4960]], 1
// CHECK-NEXT:    br i1 [[TMP4963]], label [[FX_ATOMIC_EXIT477:%.*]], label [[FX_ATOMIC_CONT478:%.*]]
// CHECK:       fx.atomic.cont478:
// CHECK-NEXT:    store float [[TMP4962]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT477]]
// CHECK:       fx.atomic.exit477:
// CHECK-NEXT:    [[TMP4964:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4965:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4966:%.*]] = bitcast float [[TMP4964]] to i32
// CHECK-NEXT:    [[TMP4967:%.*]] = bitcast float [[TMP4965]] to i32
// CHECK-NEXT:    [[TMP4968:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4966]], i32 [[TMP4967]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4969:%.*]] = extractvalue { i32, i1 } [[TMP4968]], 1
// CHECK-NEXT:    [[TMP4970:%.*]] = sext i1 [[TMP4969]] to i32
// CHECK-NEXT:    store i32 [[TMP4970]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4971:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4972:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4973:%.*]] = bitcast float [[TMP4971]] to i32
// CHECK-NEXT:    [[TMP4974:%.*]] = bitcast float [[TMP4972]] to i32
// CHECK-NEXT:    [[TMP4975:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4973]], i32 [[TMP4974]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4976:%.*]] = extractvalue { i32, i1 } [[TMP4975]], 1
// CHECK-NEXT:    [[TMP4977:%.*]] = sext i1 [[TMP4976]] to i32
// CHECK-NEXT:    store i32 [[TMP4977]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4978:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4979:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4980:%.*]] = bitcast float [[TMP4978]] to i32
// CHECK-NEXT:    [[TMP4981:%.*]] = bitcast float [[TMP4979]] to i32
// CHECK-NEXT:    [[TMP4982:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4980]], i32 [[TMP4981]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4983:%.*]] = extractvalue { i32, i1 } [[TMP4982]], 0
// CHECK-NEXT:    [[TMP4984:%.*]] = bitcast i32 [[TMP4983]] to float
// CHECK-NEXT:    [[TMP4985:%.*]] = extractvalue { i32, i1 } [[TMP4982]], 1
// CHECK-NEXT:    br i1 [[TMP4985]], label [[FX_ATOMIC_EXIT479:%.*]], label [[FX_ATOMIC_CONT480:%.*]]
// CHECK:       fx.atomic.cont480:
// CHECK-NEXT:    store float [[TMP4984]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT479]]
// CHECK:       fx.atomic.exit479:
// CHECK-NEXT:    [[TMP4986:%.*]] = extractvalue { i32, i1 } [[TMP4982]], 1
// CHECK-NEXT:    [[TMP4987:%.*]] = sext i1 [[TMP4986]] to i32
// CHECK-NEXT:    store i32 [[TMP4987]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4988:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4989:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP4990:%.*]] = bitcast float [[TMP4988]] to i32
// CHECK-NEXT:    [[TMP4991:%.*]] = bitcast float [[TMP4989]] to i32
// CHECK-NEXT:    [[TMP4992:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP4990]], i32 [[TMP4991]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP4993:%.*]] = extractvalue { i32, i1 } [[TMP4992]], 0
// CHECK-NEXT:    [[TMP4994:%.*]] = bitcast i32 [[TMP4993]] to float
// CHECK-NEXT:    [[TMP4995:%.*]] = extractvalue { i32, i1 } [[TMP4992]], 1
// CHECK-NEXT:    br i1 [[TMP4995]], label [[FX_ATOMIC_EXIT481:%.*]], label [[FX_ATOMIC_CONT482:%.*]]
// CHECK:       fx.atomic.cont482:
// CHECK-NEXT:    store float [[TMP4994]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT481]]
// CHECK:       fx.atomic.exit481:
// CHECK-NEXT:    [[TMP4996:%.*]] = extractvalue { i32, i1 } [[TMP4992]], 1
// CHECK-NEXT:    [[TMP4997:%.*]] = sext i1 [[TMP4996]] to i32
// CHECK-NEXT:    store i32 [[TMP4997]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP4998:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP4999:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP4998]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP4999]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5000:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5001:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5000]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP5001]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5002:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5003:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5002]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP5003]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5004:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5005:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5004]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP5005]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5006:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5007:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5008:%.*]] = bitcast float [[TMP5006]] to i32
// CHECK-NEXT:    [[TMP5009:%.*]] = bitcast float [[TMP5007]] to i32
// CHECK-NEXT:    [[TMP5010:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5008]], i32 [[TMP5009]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5011:%.*]] = extractvalue { i32, i1 } [[TMP5010]], 0
// CHECK-NEXT:    [[TMP5012:%.*]] = bitcast i32 [[TMP5011]] to float
// CHECK-NEXT:    store float [[TMP5012]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5013:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5014:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5015:%.*]] = bitcast float [[TMP5013]] to i32
// CHECK-NEXT:    [[TMP5016:%.*]] = bitcast float [[TMP5014]] to i32
// CHECK-NEXT:    [[TMP5017:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5015]], i32 [[TMP5016]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5018:%.*]] = extractvalue { i32, i1 } [[TMP5017]], 0
// CHECK-NEXT:    [[TMP5019:%.*]] = bitcast i32 [[TMP5018]] to float
// CHECK-NEXT:    store float [[TMP5019]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5020:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5021:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5020]] monotonic, align 4
// CHECK-NEXT:    [[TMP5022:%.*]] = fcmp ogt float [[TMP5021]], [[TMP5020]]
// CHECK-NEXT:    [[TMP5023:%.*]] = select i1 [[TMP5022]], float [[TMP5020]], float [[TMP5021]]
// CHECK-NEXT:    store float [[TMP5023]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5024:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5025:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5024]] monotonic, align 4
// CHECK-NEXT:    [[TMP5026:%.*]] = fcmp olt float [[TMP5025]], [[TMP5024]]
// CHECK-NEXT:    [[TMP5027:%.*]] = select i1 [[TMP5026]], float [[TMP5024]], float [[TMP5025]]
// CHECK-NEXT:    store float [[TMP5027]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5028:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5029:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5028]] monotonic, align 4
// CHECK-NEXT:    [[TMP5030:%.*]] = fcmp olt float [[TMP5029]], [[TMP5028]]
// CHECK-NEXT:    [[TMP5031:%.*]] = select i1 [[TMP5030]], float [[TMP5028]], float [[TMP5029]]
// CHECK-NEXT:    store float [[TMP5031]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5032:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5033:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5032]] monotonic, align 4
// CHECK-NEXT:    [[TMP5034:%.*]] = fcmp ogt float [[TMP5033]], [[TMP5032]]
// CHECK-NEXT:    [[TMP5035:%.*]] = select i1 [[TMP5034]], float [[TMP5032]], float [[TMP5033]]
// CHECK-NEXT:    store float [[TMP5035]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5036:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5037:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5038:%.*]] = bitcast float [[TMP5036]] to i32
// CHECK-NEXT:    [[TMP5039:%.*]] = bitcast float [[TMP5037]] to i32
// CHECK-NEXT:    [[TMP5040:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5038]], i32 [[TMP5039]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5041:%.*]] = extractvalue { i32, i1 } [[TMP5040]], 0
// CHECK-NEXT:    [[TMP5042:%.*]] = bitcast i32 [[TMP5041]] to float
// CHECK-NEXT:    [[TMP5043:%.*]] = extractvalue { i32, i1 } [[TMP5040]], 1
// CHECK-NEXT:    [[TMP5044:%.*]] = select i1 [[TMP5043]], float [[TMP5036]], float [[TMP5042]]
// CHECK-NEXT:    store float [[TMP5044]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5045:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5046:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5047:%.*]] = bitcast float [[TMP5045]] to i32
// CHECK-NEXT:    [[TMP5048:%.*]] = bitcast float [[TMP5046]] to i32
// CHECK-NEXT:    [[TMP5049:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5047]], i32 [[TMP5048]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5050:%.*]] = extractvalue { i32, i1 } [[TMP5049]], 0
// CHECK-NEXT:    [[TMP5051:%.*]] = bitcast i32 [[TMP5050]] to float
// CHECK-NEXT:    [[TMP5052:%.*]] = extractvalue { i32, i1 } [[TMP5049]], 1
// CHECK-NEXT:    [[TMP5053:%.*]] = select i1 [[TMP5052]], float [[TMP5045]], float [[TMP5051]]
// CHECK-NEXT:    store float [[TMP5053]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP5054:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5055:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5056:%.*]] = bitcast float [[TMP5054]] to i32
// CHECK-NEXT:    [[TMP5057:%.*]] = bitcast float [[TMP5055]] to i32
// CHECK-NEXT:    [[TMP5058:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5056]], i32 [[TMP5057]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5059:%.*]] = extractvalue { i32, i1 } [[TMP5058]], 0
// CHECK-NEXT:    [[TMP5060:%.*]] = bitcast i32 [[TMP5059]] to float
// CHECK-NEXT:    [[TMP5061:%.*]] = extractvalue { i32, i1 } [[TMP5058]], 1
// CHECK-NEXT:    br i1 [[TMP5061]], label [[FX_ATOMIC_EXIT483:%.*]], label [[FX_ATOMIC_CONT484:%.*]]
// CHECK:       fx.atomic.cont484:
// CHECK-NEXT:    store float [[TMP5060]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT483]]
// CHECK:       fx.atomic.exit483:
// CHECK-NEXT:    [[TMP5062:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5063:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5064:%.*]] = bitcast float [[TMP5062]] to i32
// CHECK-NEXT:    [[TMP5065:%.*]] = bitcast float [[TMP5063]] to i32
// CHECK-NEXT:    [[TMP5066:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5064]], i32 [[TMP5065]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5067:%.*]] = extractvalue { i32, i1 } [[TMP5066]], 0
// CHECK-NEXT:    [[TMP5068:%.*]] = bitcast i32 [[TMP5067]] to float
// CHECK-NEXT:    [[TMP5069:%.*]] = extractvalue { i32, i1 } [[TMP5066]], 1
// CHECK-NEXT:    br i1 [[TMP5069]], label [[FX_ATOMIC_EXIT485:%.*]], label [[FX_ATOMIC_CONT486:%.*]]
// CHECK:       fx.atomic.cont486:
// CHECK-NEXT:    store float [[TMP5068]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT485]]
// CHECK:       fx.atomic.exit485:
// CHECK-NEXT:    [[TMP5070:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5071:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5072:%.*]] = bitcast float [[TMP5070]] to i32
// CHECK-NEXT:    [[TMP5073:%.*]] = bitcast float [[TMP5071]] to i32
// CHECK-NEXT:    [[TMP5074:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5072]], i32 [[TMP5073]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5075:%.*]] = extractvalue { i32, i1 } [[TMP5074]], 1
// CHECK-NEXT:    [[TMP5076:%.*]] = sext i1 [[TMP5075]] to i32
// CHECK-NEXT:    store i32 [[TMP5076]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5077:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5078:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5079:%.*]] = bitcast float [[TMP5077]] to i32
// CHECK-NEXT:    [[TMP5080:%.*]] = bitcast float [[TMP5078]] to i32
// CHECK-NEXT:    [[TMP5081:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5079]], i32 [[TMP5080]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5082:%.*]] = extractvalue { i32, i1 } [[TMP5081]], 1
// CHECK-NEXT:    [[TMP5083:%.*]] = sext i1 [[TMP5082]] to i32
// CHECK-NEXT:    store i32 [[TMP5083]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5084:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5085:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5086:%.*]] = bitcast float [[TMP5084]] to i32
// CHECK-NEXT:    [[TMP5087:%.*]] = bitcast float [[TMP5085]] to i32
// CHECK-NEXT:    [[TMP5088:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5086]], i32 [[TMP5087]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5089:%.*]] = extractvalue { i32, i1 } [[TMP5088]], 0
// CHECK-NEXT:    [[TMP5090:%.*]] = bitcast i32 [[TMP5089]] to float
// CHECK-NEXT:    [[TMP5091:%.*]] = extractvalue { i32, i1 } [[TMP5088]], 1
// CHECK-NEXT:    br i1 [[TMP5091]], label [[FX_ATOMIC_EXIT487:%.*]], label [[FX_ATOMIC_CONT488:%.*]]
// CHECK:       fx.atomic.cont488:
// CHECK-NEXT:    store float [[TMP5090]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT487]]
// CHECK:       fx.atomic.exit487:
// CHECK-NEXT:    [[TMP5092:%.*]] = extractvalue { i32, i1 } [[TMP5088]], 1
// CHECK-NEXT:    [[TMP5093:%.*]] = sext i1 [[TMP5092]] to i32
// CHECK-NEXT:    store i32 [[TMP5093]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5094:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5095:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5096:%.*]] = bitcast float [[TMP5094]] to i32
// CHECK-NEXT:    [[TMP5097:%.*]] = bitcast float [[TMP5095]] to i32
// CHECK-NEXT:    [[TMP5098:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5096]], i32 [[TMP5097]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP5099:%.*]] = extractvalue { i32, i1 } [[TMP5098]], 0
// CHECK-NEXT:    [[TMP5100:%.*]] = bitcast i32 [[TMP5099]] to float
// CHECK-NEXT:    [[TMP5101:%.*]] = extractvalue { i32, i1 } [[TMP5098]], 1
// CHECK-NEXT:    br i1 [[TMP5101]], label [[FX_ATOMIC_EXIT489:%.*]], label [[FX_ATOMIC_CONT490:%.*]]
// CHECK:       fx.atomic.cont490:
// CHECK-NEXT:    store float [[TMP5100]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT489]]
// CHECK:       fx.atomic.exit489:
// CHECK-NEXT:    [[TMP5102:%.*]] = extractvalue { i32, i1 } [[TMP5098]], 1
// CHECK-NEXT:    [[TMP5103:%.*]] = sext i1 [[TMP5102]] to i32
// CHECK-NEXT:    store i32 [[TMP5103]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5104:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5105:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5104]] release, align 4
// CHECK-NEXT:    store float [[TMP5105]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5106:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5107:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5106]] release, align 4
// CHECK-NEXT:    store float [[TMP5107]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5108:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5109:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5108]] release, align 4
// CHECK-NEXT:    store float [[TMP5109]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5110:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5111:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5110]] release, align 4
// CHECK-NEXT:    store float [[TMP5111]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5112:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5113:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5114:%.*]] = bitcast float [[TMP5112]] to i32
// CHECK-NEXT:    [[TMP5115:%.*]] = bitcast float [[TMP5113]] to i32
// CHECK-NEXT:    [[TMP5116:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5114]], i32 [[TMP5115]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5117:%.*]] = extractvalue { i32, i1 } [[TMP5116]], 0
// CHECK-NEXT:    [[TMP5118:%.*]] = bitcast i32 [[TMP5117]] to float
// CHECK-NEXT:    store float [[TMP5118]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5119:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5120:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5121:%.*]] = bitcast float [[TMP5119]] to i32
// CHECK-NEXT:    [[TMP5122:%.*]] = bitcast float [[TMP5120]] to i32
// CHECK-NEXT:    [[TMP5123:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5121]], i32 [[TMP5122]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5124:%.*]] = extractvalue { i32, i1 } [[TMP5123]], 0
// CHECK-NEXT:    [[TMP5125:%.*]] = bitcast i32 [[TMP5124]] to float
// CHECK-NEXT:    store float [[TMP5125]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5126:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5127:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5126]] release, align 4
// CHECK-NEXT:    [[TMP5128:%.*]] = fcmp ogt float [[TMP5127]], [[TMP5126]]
// CHECK-NEXT:    [[TMP5129:%.*]] = select i1 [[TMP5128]], float [[TMP5126]], float [[TMP5127]]
// CHECK-NEXT:    store float [[TMP5129]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5130:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5131:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5130]] release, align 4
// CHECK-NEXT:    [[TMP5132:%.*]] = fcmp olt float [[TMP5131]], [[TMP5130]]
// CHECK-NEXT:    [[TMP5133:%.*]] = select i1 [[TMP5132]], float [[TMP5130]], float [[TMP5131]]
// CHECK-NEXT:    store float [[TMP5133]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5134:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5135:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5134]] release, align 4
// CHECK-NEXT:    [[TMP5136:%.*]] = fcmp olt float [[TMP5135]], [[TMP5134]]
// CHECK-NEXT:    [[TMP5137:%.*]] = select i1 [[TMP5136]], float [[TMP5134]], float [[TMP5135]]
// CHECK-NEXT:    store float [[TMP5137]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5138:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5139:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5138]] release, align 4
// CHECK-NEXT:    [[TMP5140:%.*]] = fcmp ogt float [[TMP5139]], [[TMP5138]]
// CHECK-NEXT:    [[TMP5141:%.*]] = select i1 [[TMP5140]], float [[TMP5138]], float [[TMP5139]]
// CHECK-NEXT:    store float [[TMP5141]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5142:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5143:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5144:%.*]] = bitcast float [[TMP5142]] to i32
// CHECK-NEXT:    [[TMP5145:%.*]] = bitcast float [[TMP5143]] to i32
// CHECK-NEXT:    [[TMP5146:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5144]], i32 [[TMP5145]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5147:%.*]] = extractvalue { i32, i1 } [[TMP5146]], 0
// CHECK-NEXT:    [[TMP5148:%.*]] = bitcast i32 [[TMP5147]] to float
// CHECK-NEXT:    [[TMP5149:%.*]] = extractvalue { i32, i1 } [[TMP5146]], 1
// CHECK-NEXT:    [[TMP5150:%.*]] = select i1 [[TMP5149]], float [[TMP5142]], float [[TMP5148]]
// CHECK-NEXT:    store float [[TMP5150]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5151:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5152:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5153:%.*]] = bitcast float [[TMP5151]] to i32
// CHECK-NEXT:    [[TMP5154:%.*]] = bitcast float [[TMP5152]] to i32
// CHECK-NEXT:    [[TMP5155:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5153]], i32 [[TMP5154]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5156:%.*]] = extractvalue { i32, i1 } [[TMP5155]], 0
// CHECK-NEXT:    [[TMP5157:%.*]] = bitcast i32 [[TMP5156]] to float
// CHECK-NEXT:    [[TMP5158:%.*]] = extractvalue { i32, i1 } [[TMP5155]], 1
// CHECK-NEXT:    [[TMP5159:%.*]] = select i1 [[TMP5158]], float [[TMP5151]], float [[TMP5157]]
// CHECK-NEXT:    store float [[TMP5159]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5160:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5161:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5162:%.*]] = bitcast float [[TMP5160]] to i32
// CHECK-NEXT:    [[TMP5163:%.*]] = bitcast float [[TMP5161]] to i32
// CHECK-NEXT:    [[TMP5164:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5162]], i32 [[TMP5163]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5165:%.*]] = extractvalue { i32, i1 } [[TMP5164]], 0
// CHECK-NEXT:    [[TMP5166:%.*]] = bitcast i32 [[TMP5165]] to float
// CHECK-NEXT:    [[TMP5167:%.*]] = extractvalue { i32, i1 } [[TMP5164]], 1
// CHECK-NEXT:    br i1 [[TMP5167]], label [[FX_ATOMIC_EXIT491:%.*]], label [[FX_ATOMIC_CONT492:%.*]]
// CHECK:       fx.atomic.cont492:
// CHECK-NEXT:    store float [[TMP5166]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT491]]
// CHECK:       fx.atomic.exit491:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5168:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5169:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5170:%.*]] = bitcast float [[TMP5168]] to i32
// CHECK-NEXT:    [[TMP5171:%.*]] = bitcast float [[TMP5169]] to i32
// CHECK-NEXT:    [[TMP5172:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5170]], i32 [[TMP5171]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5173:%.*]] = extractvalue { i32, i1 } [[TMP5172]], 0
// CHECK-NEXT:    [[TMP5174:%.*]] = bitcast i32 [[TMP5173]] to float
// CHECK-NEXT:    [[TMP5175:%.*]] = extractvalue { i32, i1 } [[TMP5172]], 1
// CHECK-NEXT:    br i1 [[TMP5175]], label [[FX_ATOMIC_EXIT493:%.*]], label [[FX_ATOMIC_CONT494:%.*]]
// CHECK:       fx.atomic.cont494:
// CHECK-NEXT:    store float [[TMP5174]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT493]]
// CHECK:       fx.atomic.exit493:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5176:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5177:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5178:%.*]] = bitcast float [[TMP5176]] to i32
// CHECK-NEXT:    [[TMP5179:%.*]] = bitcast float [[TMP5177]] to i32
// CHECK-NEXT:    [[TMP5180:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5178]], i32 [[TMP5179]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5181:%.*]] = extractvalue { i32, i1 } [[TMP5180]], 1
// CHECK-NEXT:    [[TMP5182:%.*]] = sext i1 [[TMP5181]] to i32
// CHECK-NEXT:    store i32 [[TMP5182]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5183:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5184:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5185:%.*]] = bitcast float [[TMP5183]] to i32
// CHECK-NEXT:    [[TMP5186:%.*]] = bitcast float [[TMP5184]] to i32
// CHECK-NEXT:    [[TMP5187:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5185]], i32 [[TMP5186]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5188:%.*]] = extractvalue { i32, i1 } [[TMP5187]], 1
// CHECK-NEXT:    [[TMP5189:%.*]] = sext i1 [[TMP5188]] to i32
// CHECK-NEXT:    store i32 [[TMP5189]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5190:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5191:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5192:%.*]] = bitcast float [[TMP5190]] to i32
// CHECK-NEXT:    [[TMP5193:%.*]] = bitcast float [[TMP5191]] to i32
// CHECK-NEXT:    [[TMP5194:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5192]], i32 [[TMP5193]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5195:%.*]] = extractvalue { i32, i1 } [[TMP5194]], 0
// CHECK-NEXT:    [[TMP5196:%.*]] = bitcast i32 [[TMP5195]] to float
// CHECK-NEXT:    [[TMP5197:%.*]] = extractvalue { i32, i1 } [[TMP5194]], 1
// CHECK-NEXT:    br i1 [[TMP5197]], label [[FX_ATOMIC_EXIT495:%.*]], label [[FX_ATOMIC_CONT496:%.*]]
// CHECK:       fx.atomic.cont496:
// CHECK-NEXT:    store float [[TMP5196]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT495]]
// CHECK:       fx.atomic.exit495:
// CHECK-NEXT:    [[TMP5198:%.*]] = extractvalue { i32, i1 } [[TMP5194]], 1
// CHECK-NEXT:    [[TMP5199:%.*]] = sext i1 [[TMP5198]] to i32
// CHECK-NEXT:    store i32 [[TMP5199]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5200:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5201:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5202:%.*]] = bitcast float [[TMP5200]] to i32
// CHECK-NEXT:    [[TMP5203:%.*]] = bitcast float [[TMP5201]] to i32
// CHECK-NEXT:    [[TMP5204:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5202]], i32 [[TMP5203]] release monotonic, align 4
// CHECK-NEXT:    [[TMP5205:%.*]] = extractvalue { i32, i1 } [[TMP5204]], 0
// CHECK-NEXT:    [[TMP5206:%.*]] = bitcast i32 [[TMP5205]] to float
// CHECK-NEXT:    [[TMP5207:%.*]] = extractvalue { i32, i1 } [[TMP5204]], 1
// CHECK-NEXT:    br i1 [[TMP5207]], label [[FX_ATOMIC_EXIT497:%.*]], label [[FX_ATOMIC_CONT498:%.*]]
// CHECK:       fx.atomic.cont498:
// CHECK-NEXT:    store float [[TMP5206]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT497]]
// CHECK:       fx.atomic.exit497:
// CHECK-NEXT:    [[TMP5208:%.*]] = extractvalue { i32, i1 } [[TMP5204]], 1
// CHECK-NEXT:    [[TMP5209:%.*]] = sext i1 [[TMP5208]] to i32
// CHECK-NEXT:    store i32 [[TMP5209]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5210:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5211:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5210]] seq_cst, align 4
// CHECK-NEXT:    store float [[TMP5211]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5212:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5213:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5212]] seq_cst, align 4
// CHECK-NEXT:    store float [[TMP5213]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5214:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5215:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5214]] seq_cst, align 4
// CHECK-NEXT:    store float [[TMP5215]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5216:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5217:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5216]] seq_cst, align 4
// CHECK-NEXT:    store float [[TMP5217]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5218:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5219:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5220:%.*]] = bitcast float [[TMP5218]] to i32
// CHECK-NEXT:    [[TMP5221:%.*]] = bitcast float [[TMP5219]] to i32
// CHECK-NEXT:    [[TMP5222:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5220]], i32 [[TMP5221]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5223:%.*]] = extractvalue { i32, i1 } [[TMP5222]], 0
// CHECK-NEXT:    [[TMP5224:%.*]] = bitcast i32 [[TMP5223]] to float
// CHECK-NEXT:    store float [[TMP5224]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5225:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5226:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5227:%.*]] = bitcast float [[TMP5225]] to i32
// CHECK-NEXT:    [[TMP5228:%.*]] = bitcast float [[TMP5226]] to i32
// CHECK-NEXT:    [[TMP5229:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5227]], i32 [[TMP5228]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5230:%.*]] = extractvalue { i32, i1 } [[TMP5229]], 0
// CHECK-NEXT:    [[TMP5231:%.*]] = bitcast i32 [[TMP5230]] to float
// CHECK-NEXT:    store float [[TMP5231]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5232:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5233:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5232]] seq_cst, align 4
// CHECK-NEXT:    [[TMP5234:%.*]] = fcmp ogt float [[TMP5233]], [[TMP5232]]
// CHECK-NEXT:    [[TMP5235:%.*]] = select i1 [[TMP5234]], float [[TMP5232]], float [[TMP5233]]
// CHECK-NEXT:    store float [[TMP5235]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5236:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5237:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5236]] seq_cst, align 4
// CHECK-NEXT:    [[TMP5238:%.*]] = fcmp olt float [[TMP5237]], [[TMP5236]]
// CHECK-NEXT:    [[TMP5239:%.*]] = select i1 [[TMP5238]], float [[TMP5236]], float [[TMP5237]]
// CHECK-NEXT:    store float [[TMP5239]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5240:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5241:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP5240]] seq_cst, align 4
// CHECK-NEXT:    [[TMP5242:%.*]] = fcmp olt float [[TMP5241]], [[TMP5240]]
// CHECK-NEXT:    [[TMP5243:%.*]] = select i1 [[TMP5242]], float [[TMP5240]], float [[TMP5241]]
// CHECK-NEXT:    store float [[TMP5243]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5244:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5245:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP5244]] seq_cst, align 4
// CHECK-NEXT:    [[TMP5246:%.*]] = fcmp ogt float [[TMP5245]], [[TMP5244]]
// CHECK-NEXT:    [[TMP5247:%.*]] = select i1 [[TMP5246]], float [[TMP5244]], float [[TMP5245]]
// CHECK-NEXT:    store float [[TMP5247]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5248:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5249:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5250:%.*]] = bitcast float [[TMP5248]] to i32
// CHECK-NEXT:    [[TMP5251:%.*]] = bitcast float [[TMP5249]] to i32
// CHECK-NEXT:    [[TMP5252:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5250]], i32 [[TMP5251]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5253:%.*]] = extractvalue { i32, i1 } [[TMP5252]], 0
// CHECK-NEXT:    [[TMP5254:%.*]] = bitcast i32 [[TMP5253]] to float
// CHECK-NEXT:    [[TMP5255:%.*]] = extractvalue { i32, i1 } [[TMP5252]], 1
// CHECK-NEXT:    [[TMP5256:%.*]] = select i1 [[TMP5255]], float [[TMP5248]], float [[TMP5254]]
// CHECK-NEXT:    store float [[TMP5256]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5257:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5258:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5259:%.*]] = bitcast float [[TMP5257]] to i32
// CHECK-NEXT:    [[TMP5260:%.*]] = bitcast float [[TMP5258]] to i32
// CHECK-NEXT:    [[TMP5261:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5259]], i32 [[TMP5260]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5262:%.*]] = extractvalue { i32, i1 } [[TMP5261]], 0
// CHECK-NEXT:    [[TMP5263:%.*]] = bitcast i32 [[TMP5262]] to float
// CHECK-NEXT:    [[TMP5264:%.*]] = extractvalue { i32, i1 } [[TMP5261]], 1
// CHECK-NEXT:    [[TMP5265:%.*]] = select i1 [[TMP5264]], float [[TMP5257]], float [[TMP5263]]
// CHECK-NEXT:    store float [[TMP5265]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5266:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5267:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5268:%.*]] = bitcast float [[TMP5266]] to i32
// CHECK-NEXT:    [[TMP5269:%.*]] = bitcast float [[TMP5267]] to i32
// CHECK-NEXT:    [[TMP5270:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5268]], i32 [[TMP5269]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5271:%.*]] = extractvalue { i32, i1 } [[TMP5270]], 0
// CHECK-NEXT:    [[TMP5272:%.*]] = bitcast i32 [[TMP5271]] to float
// CHECK-NEXT:    [[TMP5273:%.*]] = extractvalue { i32, i1 } [[TMP5270]], 1
// CHECK-NEXT:    br i1 [[TMP5273]], label [[FX_ATOMIC_EXIT499:%.*]], label [[FX_ATOMIC_CONT500:%.*]]
// CHECK:       fx.atomic.cont500:
// CHECK-NEXT:    store float [[TMP5272]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT499]]
// CHECK:       fx.atomic.exit499:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5274:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5275:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5276:%.*]] = bitcast float [[TMP5274]] to i32
// CHECK-NEXT:    [[TMP5277:%.*]] = bitcast float [[TMP5275]] to i32
// CHECK-NEXT:    [[TMP5278:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5276]], i32 [[TMP5277]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5279:%.*]] = extractvalue { i32, i1 } [[TMP5278]], 0
// CHECK-NEXT:    [[TMP5280:%.*]] = bitcast i32 [[TMP5279]] to float
// CHECK-NEXT:    [[TMP5281:%.*]] = extractvalue { i32, i1 } [[TMP5278]], 1
// CHECK-NEXT:    br i1 [[TMP5281]], label [[FX_ATOMIC_EXIT501:%.*]], label [[FX_ATOMIC_CONT502:%.*]]
// CHECK:       fx.atomic.cont502:
// CHECK-NEXT:    store float [[TMP5280]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT501]]
// CHECK:       fx.atomic.exit501:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5282:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5283:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5284:%.*]] = bitcast float [[TMP5282]] to i32
// CHECK-NEXT:    [[TMP5285:%.*]] = bitcast float [[TMP5283]] to i32
// CHECK-NEXT:    [[TMP5286:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5284]], i32 [[TMP5285]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5287:%.*]] = extractvalue { i32, i1 } [[TMP5286]], 1
// CHECK-NEXT:    [[TMP5288:%.*]] = sext i1 [[TMP5287]] to i32
// CHECK-NEXT:    store i32 [[TMP5288]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5289:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5290:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5291:%.*]] = bitcast float [[TMP5289]] to i32
// CHECK-NEXT:    [[TMP5292:%.*]] = bitcast float [[TMP5290]] to i32
// CHECK-NEXT:    [[TMP5293:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5291]], i32 [[TMP5292]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5294:%.*]] = extractvalue { i32, i1 } [[TMP5293]], 1
// CHECK-NEXT:    [[TMP5295:%.*]] = sext i1 [[TMP5294]] to i32
// CHECK-NEXT:    store i32 [[TMP5295]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5296:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5297:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5298:%.*]] = bitcast float [[TMP5296]] to i32
// CHECK-NEXT:    [[TMP5299:%.*]] = bitcast float [[TMP5297]] to i32
// CHECK-NEXT:    [[TMP5300:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5298]], i32 [[TMP5299]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5301:%.*]] = extractvalue { i32, i1 } [[TMP5300]], 0
// CHECK-NEXT:    [[TMP5302:%.*]] = bitcast i32 [[TMP5301]] to float
// CHECK-NEXT:    [[TMP5303:%.*]] = extractvalue { i32, i1 } [[TMP5300]], 1
// CHECK-NEXT:    br i1 [[TMP5303]], label [[FX_ATOMIC_EXIT503:%.*]], label [[FX_ATOMIC_CONT504:%.*]]
// CHECK:       fx.atomic.cont504:
// CHECK-NEXT:    store float [[TMP5302]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT503]]
// CHECK:       fx.atomic.exit503:
// CHECK-NEXT:    [[TMP5304:%.*]] = extractvalue { i32, i1 } [[TMP5300]], 1
// CHECK-NEXT:    [[TMP5305:%.*]] = sext i1 [[TMP5304]] to i32
// CHECK-NEXT:    store i32 [[TMP5305]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5306:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5307:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP5308:%.*]] = bitcast float [[TMP5306]] to i32
// CHECK-NEXT:    [[TMP5309:%.*]] = bitcast float [[TMP5307]] to i32
// CHECK-NEXT:    [[TMP5310:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP5308]], i32 [[TMP5309]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP5311:%.*]] = extractvalue { i32, i1 } [[TMP5310]], 0
// CHECK-NEXT:    [[TMP5312:%.*]] = bitcast i32 [[TMP5311]] to float
// CHECK-NEXT:    [[TMP5313:%.*]] = extractvalue { i32, i1 } [[TMP5310]], 1
// CHECK-NEXT:    br i1 [[TMP5313]], label [[FX_ATOMIC_EXIT505:%.*]], label [[FX_ATOMIC_CONT506:%.*]]
// CHECK:       fx.atomic.cont506:
// CHECK-NEXT:    store float [[TMP5312]], ptr [[FV]], align 4
// CHECK-NEXT:    br label [[FX_ATOMIC_EXIT505]]
// CHECK:       fx.atomic.exit505:
// CHECK-NEXT:    [[TMP5314:%.*]] = extractvalue { i32, i1 } [[TMP5310]], 1
// CHECK-NEXT:    [[TMP5315:%.*]] = sext i1 [[TMP5314]] to i32
// CHECK-NEXT:    store i32 [[TMP5315]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5316:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5317:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5316]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5317]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5318:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5319:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5318]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5319]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5320:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5321:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5320]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5321]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5322:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5323:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5322]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5323]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5324:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5325:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5326:%.*]] = bitcast double [[TMP5324]] to i64
// CHECK-NEXT:    [[TMP5327:%.*]] = bitcast double [[TMP5325]] to i64
// CHECK-NEXT:    [[TMP5328:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5326]], i64 [[TMP5327]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5329:%.*]] = extractvalue { i64, i1 } [[TMP5328]], 0
// CHECK-NEXT:    [[TMP5330:%.*]] = bitcast i64 [[TMP5329]] to double
// CHECK-NEXT:    store double [[TMP5330]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5331:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5332:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5333:%.*]] = bitcast double [[TMP5331]] to i64
// CHECK-NEXT:    [[TMP5334:%.*]] = bitcast double [[TMP5332]] to i64
// CHECK-NEXT:    [[TMP5335:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5333]], i64 [[TMP5334]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5336:%.*]] = extractvalue { i64, i1 } [[TMP5335]], 0
// CHECK-NEXT:    [[TMP5337:%.*]] = bitcast i64 [[TMP5336]] to double
// CHECK-NEXT:    store double [[TMP5337]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5338:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5339:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5338]] monotonic, align 8
// CHECK-NEXT:    [[TMP5340:%.*]] = fcmp ogt double [[TMP5339]], [[TMP5338]]
// CHECK-NEXT:    [[TMP5341:%.*]] = select i1 [[TMP5340]], double [[TMP5338]], double [[TMP5339]]
// CHECK-NEXT:    store double [[TMP5341]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5342:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5343:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5342]] monotonic, align 8
// CHECK-NEXT:    [[TMP5344:%.*]] = fcmp olt double [[TMP5343]], [[TMP5342]]
// CHECK-NEXT:    [[TMP5345:%.*]] = select i1 [[TMP5344]], double [[TMP5342]], double [[TMP5343]]
// CHECK-NEXT:    store double [[TMP5345]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5346:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5347:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5346]] monotonic, align 8
// CHECK-NEXT:    [[TMP5348:%.*]] = fcmp olt double [[TMP5347]], [[TMP5346]]
// CHECK-NEXT:    [[TMP5349:%.*]] = select i1 [[TMP5348]], double [[TMP5346]], double [[TMP5347]]
// CHECK-NEXT:    store double [[TMP5349]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5350:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5351:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5350]] monotonic, align 8
// CHECK-NEXT:    [[TMP5352:%.*]] = fcmp ogt double [[TMP5351]], [[TMP5350]]
// CHECK-NEXT:    [[TMP5353:%.*]] = select i1 [[TMP5352]], double [[TMP5350]], double [[TMP5351]]
// CHECK-NEXT:    store double [[TMP5353]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5354:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5355:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5356:%.*]] = bitcast double [[TMP5354]] to i64
// CHECK-NEXT:    [[TMP5357:%.*]] = bitcast double [[TMP5355]] to i64
// CHECK-NEXT:    [[TMP5358:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5356]], i64 [[TMP5357]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5359:%.*]] = extractvalue { i64, i1 } [[TMP5358]], 0
// CHECK-NEXT:    [[TMP5360:%.*]] = bitcast i64 [[TMP5359]] to double
// CHECK-NEXT:    [[TMP5361:%.*]] = extractvalue { i64, i1 } [[TMP5358]], 1
// CHECK-NEXT:    [[TMP5362:%.*]] = select i1 [[TMP5361]], double [[TMP5354]], double [[TMP5360]]
// CHECK-NEXT:    store double [[TMP5362]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5363:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5364:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5365:%.*]] = bitcast double [[TMP5363]] to i64
// CHECK-NEXT:    [[TMP5366:%.*]] = bitcast double [[TMP5364]] to i64
// CHECK-NEXT:    [[TMP5367:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5365]], i64 [[TMP5366]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5368:%.*]] = extractvalue { i64, i1 } [[TMP5367]], 0
// CHECK-NEXT:    [[TMP5369:%.*]] = bitcast i64 [[TMP5368]] to double
// CHECK-NEXT:    [[TMP5370:%.*]] = extractvalue { i64, i1 } [[TMP5367]], 1
// CHECK-NEXT:    [[TMP5371:%.*]] = select i1 [[TMP5370]], double [[TMP5363]], double [[TMP5369]]
// CHECK-NEXT:    store double [[TMP5371]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5372:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5373:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5374:%.*]] = bitcast double [[TMP5372]] to i64
// CHECK-NEXT:    [[TMP5375:%.*]] = bitcast double [[TMP5373]] to i64
// CHECK-NEXT:    [[TMP5376:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5374]], i64 [[TMP5375]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5377:%.*]] = extractvalue { i64, i1 } [[TMP5376]], 0
// CHECK-NEXT:    [[TMP5378:%.*]] = bitcast i64 [[TMP5377]] to double
// CHECK-NEXT:    [[TMP5379:%.*]] = extractvalue { i64, i1 } [[TMP5376]], 1
// CHECK-NEXT:    br i1 [[TMP5379]], label [[DX_ATOMIC_EXIT:%.*]], label [[DX_ATOMIC_CONT:%.*]]
// CHECK:       dx.atomic.cont:
// CHECK-NEXT:    store double [[TMP5378]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT]]
// CHECK:       dx.atomic.exit:
// CHECK-NEXT:    [[TMP5380:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5381:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5382:%.*]] = bitcast double [[TMP5380]] to i64
// CHECK-NEXT:    [[TMP5383:%.*]] = bitcast double [[TMP5381]] to i64
// CHECK-NEXT:    [[TMP5384:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5382]], i64 [[TMP5383]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5385:%.*]] = extractvalue { i64, i1 } [[TMP5384]], 0
// CHECK-NEXT:    [[TMP5386:%.*]] = bitcast i64 [[TMP5385]] to double
// CHECK-NEXT:    [[TMP5387:%.*]] = extractvalue { i64, i1 } [[TMP5384]], 1
// CHECK-NEXT:    br i1 [[TMP5387]], label [[DX_ATOMIC_EXIT507:%.*]], label [[DX_ATOMIC_CONT508:%.*]]
// CHECK:       dx.atomic.cont508:
// CHECK-NEXT:    store double [[TMP5386]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT507]]
// CHECK:       dx.atomic.exit507:
// CHECK-NEXT:    [[TMP5388:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5389:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5390:%.*]] = bitcast double [[TMP5388]] to i64
// CHECK-NEXT:    [[TMP5391:%.*]] = bitcast double [[TMP5389]] to i64
// CHECK-NEXT:    [[TMP5392:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5390]], i64 [[TMP5391]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5393:%.*]] = extractvalue { i64, i1 } [[TMP5392]], 1
// CHECK-NEXT:    [[TMP5394:%.*]] = sext i1 [[TMP5393]] to i32
// CHECK-NEXT:    store i32 [[TMP5394]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5395:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5396:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5397:%.*]] = bitcast double [[TMP5395]] to i64
// CHECK-NEXT:    [[TMP5398:%.*]] = bitcast double [[TMP5396]] to i64
// CHECK-NEXT:    [[TMP5399:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5397]], i64 [[TMP5398]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5400:%.*]] = extractvalue { i64, i1 } [[TMP5399]], 1
// CHECK-NEXT:    [[TMP5401:%.*]] = sext i1 [[TMP5400]] to i32
// CHECK-NEXT:    store i32 [[TMP5401]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5402:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5403:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5404:%.*]] = bitcast double [[TMP5402]] to i64
// CHECK-NEXT:    [[TMP5405:%.*]] = bitcast double [[TMP5403]] to i64
// CHECK-NEXT:    [[TMP5406:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5404]], i64 [[TMP5405]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5407:%.*]] = extractvalue { i64, i1 } [[TMP5406]], 0
// CHECK-NEXT:    [[TMP5408:%.*]] = bitcast i64 [[TMP5407]] to double
// CHECK-NEXT:    [[TMP5409:%.*]] = extractvalue { i64, i1 } [[TMP5406]], 1
// CHECK-NEXT:    br i1 [[TMP5409]], label [[DX_ATOMIC_EXIT509:%.*]], label [[DX_ATOMIC_CONT510:%.*]]
// CHECK:       dx.atomic.cont510:
// CHECK-NEXT:    store double [[TMP5408]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT509]]
// CHECK:       dx.atomic.exit509:
// CHECK-NEXT:    [[TMP5410:%.*]] = extractvalue { i64, i1 } [[TMP5406]], 1
// CHECK-NEXT:    [[TMP5411:%.*]] = sext i1 [[TMP5410]] to i32
// CHECK-NEXT:    store i32 [[TMP5411]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5412:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5413:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5414:%.*]] = bitcast double [[TMP5412]] to i64
// CHECK-NEXT:    [[TMP5415:%.*]] = bitcast double [[TMP5413]] to i64
// CHECK-NEXT:    [[TMP5416:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5414]], i64 [[TMP5415]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5417:%.*]] = extractvalue { i64, i1 } [[TMP5416]], 0
// CHECK-NEXT:    [[TMP5418:%.*]] = bitcast i64 [[TMP5417]] to double
// CHECK-NEXT:    [[TMP5419:%.*]] = extractvalue { i64, i1 } [[TMP5416]], 1
// CHECK-NEXT:    br i1 [[TMP5419]], label [[DX_ATOMIC_EXIT511:%.*]], label [[DX_ATOMIC_CONT512:%.*]]
// CHECK:       dx.atomic.cont512:
// CHECK-NEXT:    store double [[TMP5418]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT511]]
// CHECK:       dx.atomic.exit511:
// CHECK-NEXT:    [[TMP5420:%.*]] = extractvalue { i64, i1 } [[TMP5416]], 1
// CHECK-NEXT:    [[TMP5421:%.*]] = sext i1 [[TMP5420]] to i32
// CHECK-NEXT:    store i32 [[TMP5421]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5422:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5423:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5422]] acq_rel, align 8
// CHECK-NEXT:    store double [[TMP5423]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5424:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5425:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5424]] acq_rel, align 8
// CHECK-NEXT:    store double [[TMP5425]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5426:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5427:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5426]] acq_rel, align 8
// CHECK-NEXT:    store double [[TMP5427]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5428:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5429:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5428]] acq_rel, align 8
// CHECK-NEXT:    store double [[TMP5429]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5430:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5431:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5432:%.*]] = bitcast double [[TMP5430]] to i64
// CHECK-NEXT:    [[TMP5433:%.*]] = bitcast double [[TMP5431]] to i64
// CHECK-NEXT:    [[TMP5434:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5432]], i64 [[TMP5433]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5435:%.*]] = extractvalue { i64, i1 } [[TMP5434]], 0
// CHECK-NEXT:    [[TMP5436:%.*]] = bitcast i64 [[TMP5435]] to double
// CHECK-NEXT:    store double [[TMP5436]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5437:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5438:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5439:%.*]] = bitcast double [[TMP5437]] to i64
// CHECK-NEXT:    [[TMP5440:%.*]] = bitcast double [[TMP5438]] to i64
// CHECK-NEXT:    [[TMP5441:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5439]], i64 [[TMP5440]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5442:%.*]] = extractvalue { i64, i1 } [[TMP5441]], 0
// CHECK-NEXT:    [[TMP5443:%.*]] = bitcast i64 [[TMP5442]] to double
// CHECK-NEXT:    store double [[TMP5443]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5444:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5445:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5444]] acq_rel, align 8
// CHECK-NEXT:    [[TMP5446:%.*]] = fcmp ogt double [[TMP5445]], [[TMP5444]]
// CHECK-NEXT:    [[TMP5447:%.*]] = select i1 [[TMP5446]], double [[TMP5444]], double [[TMP5445]]
// CHECK-NEXT:    store double [[TMP5447]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5448:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5449:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5448]] acq_rel, align 8
// CHECK-NEXT:    [[TMP5450:%.*]] = fcmp olt double [[TMP5449]], [[TMP5448]]
// CHECK-NEXT:    [[TMP5451:%.*]] = select i1 [[TMP5450]], double [[TMP5448]], double [[TMP5449]]
// CHECK-NEXT:    store double [[TMP5451]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5452:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5453:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5452]] acq_rel, align 8
// CHECK-NEXT:    [[TMP5454:%.*]] = fcmp olt double [[TMP5453]], [[TMP5452]]
// CHECK-NEXT:    [[TMP5455:%.*]] = select i1 [[TMP5454]], double [[TMP5452]], double [[TMP5453]]
// CHECK-NEXT:    store double [[TMP5455]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5456:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5457:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5456]] acq_rel, align 8
// CHECK-NEXT:    [[TMP5458:%.*]] = fcmp ogt double [[TMP5457]], [[TMP5456]]
// CHECK-NEXT:    [[TMP5459:%.*]] = select i1 [[TMP5458]], double [[TMP5456]], double [[TMP5457]]
// CHECK-NEXT:    store double [[TMP5459]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5460:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5461:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5462:%.*]] = bitcast double [[TMP5460]] to i64
// CHECK-NEXT:    [[TMP5463:%.*]] = bitcast double [[TMP5461]] to i64
// CHECK-NEXT:    [[TMP5464:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5462]], i64 [[TMP5463]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5465:%.*]] = extractvalue { i64, i1 } [[TMP5464]], 0
// CHECK-NEXT:    [[TMP5466:%.*]] = bitcast i64 [[TMP5465]] to double
// CHECK-NEXT:    [[TMP5467:%.*]] = extractvalue { i64, i1 } [[TMP5464]], 1
// CHECK-NEXT:    [[TMP5468:%.*]] = select i1 [[TMP5467]], double [[TMP5460]], double [[TMP5466]]
// CHECK-NEXT:    store double [[TMP5468]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5469:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5470:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5471:%.*]] = bitcast double [[TMP5469]] to i64
// CHECK-NEXT:    [[TMP5472:%.*]] = bitcast double [[TMP5470]] to i64
// CHECK-NEXT:    [[TMP5473:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5471]], i64 [[TMP5472]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5474:%.*]] = extractvalue { i64, i1 } [[TMP5473]], 0
// CHECK-NEXT:    [[TMP5475:%.*]] = bitcast i64 [[TMP5474]] to double
// CHECK-NEXT:    [[TMP5476:%.*]] = extractvalue { i64, i1 } [[TMP5473]], 1
// CHECK-NEXT:    [[TMP5477:%.*]] = select i1 [[TMP5476]], double [[TMP5469]], double [[TMP5475]]
// CHECK-NEXT:    store double [[TMP5477]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5478:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5479:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5480:%.*]] = bitcast double [[TMP5478]] to i64
// CHECK-NEXT:    [[TMP5481:%.*]] = bitcast double [[TMP5479]] to i64
// CHECK-NEXT:    [[TMP5482:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5480]], i64 [[TMP5481]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5483:%.*]] = extractvalue { i64, i1 } [[TMP5482]], 0
// CHECK-NEXT:    [[TMP5484:%.*]] = bitcast i64 [[TMP5483]] to double
// CHECK-NEXT:    [[TMP5485:%.*]] = extractvalue { i64, i1 } [[TMP5482]], 1
// CHECK-NEXT:    br i1 [[TMP5485]], label [[DX_ATOMIC_EXIT513:%.*]], label [[DX_ATOMIC_CONT514:%.*]]
// CHECK:       dx.atomic.cont514:
// CHECK-NEXT:    store double [[TMP5484]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT513]]
// CHECK:       dx.atomic.exit513:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5486:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5487:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5488:%.*]] = bitcast double [[TMP5486]] to i64
// CHECK-NEXT:    [[TMP5489:%.*]] = bitcast double [[TMP5487]] to i64
// CHECK-NEXT:    [[TMP5490:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5488]], i64 [[TMP5489]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5491:%.*]] = extractvalue { i64, i1 } [[TMP5490]], 0
// CHECK-NEXT:    [[TMP5492:%.*]] = bitcast i64 [[TMP5491]] to double
// CHECK-NEXT:    [[TMP5493:%.*]] = extractvalue { i64, i1 } [[TMP5490]], 1
// CHECK-NEXT:    br i1 [[TMP5493]], label [[DX_ATOMIC_EXIT515:%.*]], label [[DX_ATOMIC_CONT516:%.*]]
// CHECK:       dx.atomic.cont516:
// CHECK-NEXT:    store double [[TMP5492]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT515]]
// CHECK:       dx.atomic.exit515:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5494:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5495:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5496:%.*]] = bitcast double [[TMP5494]] to i64
// CHECK-NEXT:    [[TMP5497:%.*]] = bitcast double [[TMP5495]] to i64
// CHECK-NEXT:    [[TMP5498:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5496]], i64 [[TMP5497]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5499:%.*]] = extractvalue { i64, i1 } [[TMP5498]], 1
// CHECK-NEXT:    [[TMP5500:%.*]] = sext i1 [[TMP5499]] to i32
// CHECK-NEXT:    store i32 [[TMP5500]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5501:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5502:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5503:%.*]] = bitcast double [[TMP5501]] to i64
// CHECK-NEXT:    [[TMP5504:%.*]] = bitcast double [[TMP5502]] to i64
// CHECK-NEXT:    [[TMP5505:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5503]], i64 [[TMP5504]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5506:%.*]] = extractvalue { i64, i1 } [[TMP5505]], 1
// CHECK-NEXT:    [[TMP5507:%.*]] = sext i1 [[TMP5506]] to i32
// CHECK-NEXT:    store i32 [[TMP5507]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5508:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5509:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5510:%.*]] = bitcast double [[TMP5508]] to i64
// CHECK-NEXT:    [[TMP5511:%.*]] = bitcast double [[TMP5509]] to i64
// CHECK-NEXT:    [[TMP5512:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5510]], i64 [[TMP5511]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5513:%.*]] = extractvalue { i64, i1 } [[TMP5512]], 0
// CHECK-NEXT:    [[TMP5514:%.*]] = bitcast i64 [[TMP5513]] to double
// CHECK-NEXT:    [[TMP5515:%.*]] = extractvalue { i64, i1 } [[TMP5512]], 1
// CHECK-NEXT:    br i1 [[TMP5515]], label [[DX_ATOMIC_EXIT517:%.*]], label [[DX_ATOMIC_CONT518:%.*]]
// CHECK:       dx.atomic.cont518:
// CHECK-NEXT:    store double [[TMP5514]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT517]]
// CHECK:       dx.atomic.exit517:
// CHECK-NEXT:    [[TMP5516:%.*]] = extractvalue { i64, i1 } [[TMP5512]], 1
// CHECK-NEXT:    [[TMP5517:%.*]] = sext i1 [[TMP5516]] to i32
// CHECK-NEXT:    store i32 [[TMP5517]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5518:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5519:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5520:%.*]] = bitcast double [[TMP5518]] to i64
// CHECK-NEXT:    [[TMP5521:%.*]] = bitcast double [[TMP5519]] to i64
// CHECK-NEXT:    [[TMP5522:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5520]], i64 [[TMP5521]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP5523:%.*]] = extractvalue { i64, i1 } [[TMP5522]], 0
// CHECK-NEXT:    [[TMP5524:%.*]] = bitcast i64 [[TMP5523]] to double
// CHECK-NEXT:    [[TMP5525:%.*]] = extractvalue { i64, i1 } [[TMP5522]], 1
// CHECK-NEXT:    br i1 [[TMP5525]], label [[DX_ATOMIC_EXIT519:%.*]], label [[DX_ATOMIC_CONT520:%.*]]
// CHECK:       dx.atomic.cont520:
// CHECK-NEXT:    store double [[TMP5524]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT519]]
// CHECK:       dx.atomic.exit519:
// CHECK-NEXT:    [[TMP5526:%.*]] = extractvalue { i64, i1 } [[TMP5522]], 1
// CHECK-NEXT:    [[TMP5527:%.*]] = sext i1 [[TMP5526]] to i32
// CHECK-NEXT:    store i32 [[TMP5527]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5528:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5529:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5528]] acquire, align 8
// CHECK-NEXT:    store double [[TMP5529]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5530:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5531:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5530]] acquire, align 8
// CHECK-NEXT:    store double [[TMP5531]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5532:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5533:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5532]] acquire, align 8
// CHECK-NEXT:    store double [[TMP5533]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5534:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5535:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5534]] acquire, align 8
// CHECK-NEXT:    store double [[TMP5535]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5536:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5537:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5538:%.*]] = bitcast double [[TMP5536]] to i64
// CHECK-NEXT:    [[TMP5539:%.*]] = bitcast double [[TMP5537]] to i64
// CHECK-NEXT:    [[TMP5540:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5538]], i64 [[TMP5539]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5541:%.*]] = extractvalue { i64, i1 } [[TMP5540]], 0
// CHECK-NEXT:    [[TMP5542:%.*]] = bitcast i64 [[TMP5541]] to double
// CHECK-NEXT:    store double [[TMP5542]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5543:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5544:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5545:%.*]] = bitcast double [[TMP5543]] to i64
// CHECK-NEXT:    [[TMP5546:%.*]] = bitcast double [[TMP5544]] to i64
// CHECK-NEXT:    [[TMP5547:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5545]], i64 [[TMP5546]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5548:%.*]] = extractvalue { i64, i1 } [[TMP5547]], 0
// CHECK-NEXT:    [[TMP5549:%.*]] = bitcast i64 [[TMP5548]] to double
// CHECK-NEXT:    store double [[TMP5549]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5550:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5551:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5550]] acquire, align 8
// CHECK-NEXT:    [[TMP5552:%.*]] = fcmp ogt double [[TMP5551]], [[TMP5550]]
// CHECK-NEXT:    [[TMP5553:%.*]] = select i1 [[TMP5552]], double [[TMP5550]], double [[TMP5551]]
// CHECK-NEXT:    store double [[TMP5553]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5554:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5555:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5554]] acquire, align 8
// CHECK-NEXT:    [[TMP5556:%.*]] = fcmp olt double [[TMP5555]], [[TMP5554]]
// CHECK-NEXT:    [[TMP5557:%.*]] = select i1 [[TMP5556]], double [[TMP5554]], double [[TMP5555]]
// CHECK-NEXT:    store double [[TMP5557]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5558:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5559:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5558]] acquire, align 8
// CHECK-NEXT:    [[TMP5560:%.*]] = fcmp olt double [[TMP5559]], [[TMP5558]]
// CHECK-NEXT:    [[TMP5561:%.*]] = select i1 [[TMP5560]], double [[TMP5558]], double [[TMP5559]]
// CHECK-NEXT:    store double [[TMP5561]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5562:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5563:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5562]] acquire, align 8
// CHECK-NEXT:    [[TMP5564:%.*]] = fcmp ogt double [[TMP5563]], [[TMP5562]]
// CHECK-NEXT:    [[TMP5565:%.*]] = select i1 [[TMP5564]], double [[TMP5562]], double [[TMP5563]]
// CHECK-NEXT:    store double [[TMP5565]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5566:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5567:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5568:%.*]] = bitcast double [[TMP5566]] to i64
// CHECK-NEXT:    [[TMP5569:%.*]] = bitcast double [[TMP5567]] to i64
// CHECK-NEXT:    [[TMP5570:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5568]], i64 [[TMP5569]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5571:%.*]] = extractvalue { i64, i1 } [[TMP5570]], 0
// CHECK-NEXT:    [[TMP5572:%.*]] = bitcast i64 [[TMP5571]] to double
// CHECK-NEXT:    [[TMP5573:%.*]] = extractvalue { i64, i1 } [[TMP5570]], 1
// CHECK-NEXT:    [[TMP5574:%.*]] = select i1 [[TMP5573]], double [[TMP5566]], double [[TMP5572]]
// CHECK-NEXT:    store double [[TMP5574]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5575:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5576:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5577:%.*]] = bitcast double [[TMP5575]] to i64
// CHECK-NEXT:    [[TMP5578:%.*]] = bitcast double [[TMP5576]] to i64
// CHECK-NEXT:    [[TMP5579:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5577]], i64 [[TMP5578]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5580:%.*]] = extractvalue { i64, i1 } [[TMP5579]], 0
// CHECK-NEXT:    [[TMP5581:%.*]] = bitcast i64 [[TMP5580]] to double
// CHECK-NEXT:    [[TMP5582:%.*]] = extractvalue { i64, i1 } [[TMP5579]], 1
// CHECK-NEXT:    [[TMP5583:%.*]] = select i1 [[TMP5582]], double [[TMP5575]], double [[TMP5581]]
// CHECK-NEXT:    store double [[TMP5583]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5584:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5585:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5586:%.*]] = bitcast double [[TMP5584]] to i64
// CHECK-NEXT:    [[TMP5587:%.*]] = bitcast double [[TMP5585]] to i64
// CHECK-NEXT:    [[TMP5588:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5586]], i64 [[TMP5587]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5589:%.*]] = extractvalue { i64, i1 } [[TMP5588]], 0
// CHECK-NEXT:    [[TMP5590:%.*]] = bitcast i64 [[TMP5589]] to double
// CHECK-NEXT:    [[TMP5591:%.*]] = extractvalue { i64, i1 } [[TMP5588]], 1
// CHECK-NEXT:    br i1 [[TMP5591]], label [[DX_ATOMIC_EXIT521:%.*]], label [[DX_ATOMIC_CONT522:%.*]]
// CHECK:       dx.atomic.cont522:
// CHECK-NEXT:    store double [[TMP5590]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT521]]
// CHECK:       dx.atomic.exit521:
// CHECK-NEXT:    [[TMP5592:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5593:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5594:%.*]] = bitcast double [[TMP5592]] to i64
// CHECK-NEXT:    [[TMP5595:%.*]] = bitcast double [[TMP5593]] to i64
// CHECK-NEXT:    [[TMP5596:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5594]], i64 [[TMP5595]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5597:%.*]] = extractvalue { i64, i1 } [[TMP5596]], 0
// CHECK-NEXT:    [[TMP5598:%.*]] = bitcast i64 [[TMP5597]] to double
// CHECK-NEXT:    [[TMP5599:%.*]] = extractvalue { i64, i1 } [[TMP5596]], 1
// CHECK-NEXT:    br i1 [[TMP5599]], label [[DX_ATOMIC_EXIT523:%.*]], label [[DX_ATOMIC_CONT524:%.*]]
// CHECK:       dx.atomic.cont524:
// CHECK-NEXT:    store double [[TMP5598]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT523]]
// CHECK:       dx.atomic.exit523:
// CHECK-NEXT:    [[TMP5600:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5601:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5602:%.*]] = bitcast double [[TMP5600]] to i64
// CHECK-NEXT:    [[TMP5603:%.*]] = bitcast double [[TMP5601]] to i64
// CHECK-NEXT:    [[TMP5604:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5602]], i64 [[TMP5603]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5605:%.*]] = extractvalue { i64, i1 } [[TMP5604]], 1
// CHECK-NEXT:    [[TMP5606:%.*]] = sext i1 [[TMP5605]] to i32
// CHECK-NEXT:    store i32 [[TMP5606]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5607:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5608:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5609:%.*]] = bitcast double [[TMP5607]] to i64
// CHECK-NEXT:    [[TMP5610:%.*]] = bitcast double [[TMP5608]] to i64
// CHECK-NEXT:    [[TMP5611:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5609]], i64 [[TMP5610]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5612:%.*]] = extractvalue { i64, i1 } [[TMP5611]], 1
// CHECK-NEXT:    [[TMP5613:%.*]] = sext i1 [[TMP5612]] to i32
// CHECK-NEXT:    store i32 [[TMP5613]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5614:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5615:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5616:%.*]] = bitcast double [[TMP5614]] to i64
// CHECK-NEXT:    [[TMP5617:%.*]] = bitcast double [[TMP5615]] to i64
// CHECK-NEXT:    [[TMP5618:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5616]], i64 [[TMP5617]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5619:%.*]] = extractvalue { i64, i1 } [[TMP5618]], 0
// CHECK-NEXT:    [[TMP5620:%.*]] = bitcast i64 [[TMP5619]] to double
// CHECK-NEXT:    [[TMP5621:%.*]] = extractvalue { i64, i1 } [[TMP5618]], 1
// CHECK-NEXT:    br i1 [[TMP5621]], label [[DX_ATOMIC_EXIT525:%.*]], label [[DX_ATOMIC_CONT526:%.*]]
// CHECK:       dx.atomic.cont526:
// CHECK-NEXT:    store double [[TMP5620]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT525]]
// CHECK:       dx.atomic.exit525:
// CHECK-NEXT:    [[TMP5622:%.*]] = extractvalue { i64, i1 } [[TMP5618]], 1
// CHECK-NEXT:    [[TMP5623:%.*]] = sext i1 [[TMP5622]] to i32
// CHECK-NEXT:    store i32 [[TMP5623]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5624:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5625:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5626:%.*]] = bitcast double [[TMP5624]] to i64
// CHECK-NEXT:    [[TMP5627:%.*]] = bitcast double [[TMP5625]] to i64
// CHECK-NEXT:    [[TMP5628:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5626]], i64 [[TMP5627]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP5629:%.*]] = extractvalue { i64, i1 } [[TMP5628]], 0
// CHECK-NEXT:    [[TMP5630:%.*]] = bitcast i64 [[TMP5629]] to double
// CHECK-NEXT:    [[TMP5631:%.*]] = extractvalue { i64, i1 } [[TMP5628]], 1
// CHECK-NEXT:    br i1 [[TMP5631]], label [[DX_ATOMIC_EXIT527:%.*]], label [[DX_ATOMIC_CONT528:%.*]]
// CHECK:       dx.atomic.cont528:
// CHECK-NEXT:    store double [[TMP5630]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT527]]
// CHECK:       dx.atomic.exit527:
// CHECK-NEXT:    [[TMP5632:%.*]] = extractvalue { i64, i1 } [[TMP5628]], 1
// CHECK-NEXT:    [[TMP5633:%.*]] = sext i1 [[TMP5632]] to i32
// CHECK-NEXT:    store i32 [[TMP5633]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5634:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5635:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5634]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5635]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5636:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5637:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5636]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5637]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5638:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5639:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5638]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5639]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5640:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5641:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5640]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP5641]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5642:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5643:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5644:%.*]] = bitcast double [[TMP5642]] to i64
// CHECK-NEXT:    [[TMP5645:%.*]] = bitcast double [[TMP5643]] to i64
// CHECK-NEXT:    [[TMP5646:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5644]], i64 [[TMP5645]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5647:%.*]] = extractvalue { i64, i1 } [[TMP5646]], 0
// CHECK-NEXT:    [[TMP5648:%.*]] = bitcast i64 [[TMP5647]] to double
// CHECK-NEXT:    store double [[TMP5648]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5649:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5650:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5651:%.*]] = bitcast double [[TMP5649]] to i64
// CHECK-NEXT:    [[TMP5652:%.*]] = bitcast double [[TMP5650]] to i64
// CHECK-NEXT:    [[TMP5653:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5651]], i64 [[TMP5652]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5654:%.*]] = extractvalue { i64, i1 } [[TMP5653]], 0
// CHECK-NEXT:    [[TMP5655:%.*]] = bitcast i64 [[TMP5654]] to double
// CHECK-NEXT:    store double [[TMP5655]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5656:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5657:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5656]] monotonic, align 8
// CHECK-NEXT:    [[TMP5658:%.*]] = fcmp ogt double [[TMP5657]], [[TMP5656]]
// CHECK-NEXT:    [[TMP5659:%.*]] = select i1 [[TMP5658]], double [[TMP5656]], double [[TMP5657]]
// CHECK-NEXT:    store double [[TMP5659]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5660:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5661:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5660]] monotonic, align 8
// CHECK-NEXT:    [[TMP5662:%.*]] = fcmp olt double [[TMP5661]], [[TMP5660]]
// CHECK-NEXT:    [[TMP5663:%.*]] = select i1 [[TMP5662]], double [[TMP5660]], double [[TMP5661]]
// CHECK-NEXT:    store double [[TMP5663]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5664:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5665:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5664]] monotonic, align 8
// CHECK-NEXT:    [[TMP5666:%.*]] = fcmp olt double [[TMP5665]], [[TMP5664]]
// CHECK-NEXT:    [[TMP5667:%.*]] = select i1 [[TMP5666]], double [[TMP5664]], double [[TMP5665]]
// CHECK-NEXT:    store double [[TMP5667]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5668:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5669:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5668]] monotonic, align 8
// CHECK-NEXT:    [[TMP5670:%.*]] = fcmp ogt double [[TMP5669]], [[TMP5668]]
// CHECK-NEXT:    [[TMP5671:%.*]] = select i1 [[TMP5670]], double [[TMP5668]], double [[TMP5669]]
// CHECK-NEXT:    store double [[TMP5671]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5672:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5673:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5674:%.*]] = bitcast double [[TMP5672]] to i64
// CHECK-NEXT:    [[TMP5675:%.*]] = bitcast double [[TMP5673]] to i64
// CHECK-NEXT:    [[TMP5676:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5674]], i64 [[TMP5675]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5677:%.*]] = extractvalue { i64, i1 } [[TMP5676]], 0
// CHECK-NEXT:    [[TMP5678:%.*]] = bitcast i64 [[TMP5677]] to double
// CHECK-NEXT:    [[TMP5679:%.*]] = extractvalue { i64, i1 } [[TMP5676]], 1
// CHECK-NEXT:    [[TMP5680:%.*]] = select i1 [[TMP5679]], double [[TMP5672]], double [[TMP5678]]
// CHECK-NEXT:    store double [[TMP5680]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5681:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5682:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5683:%.*]] = bitcast double [[TMP5681]] to i64
// CHECK-NEXT:    [[TMP5684:%.*]] = bitcast double [[TMP5682]] to i64
// CHECK-NEXT:    [[TMP5685:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5683]], i64 [[TMP5684]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5686:%.*]] = extractvalue { i64, i1 } [[TMP5685]], 0
// CHECK-NEXT:    [[TMP5687:%.*]] = bitcast i64 [[TMP5686]] to double
// CHECK-NEXT:    [[TMP5688:%.*]] = extractvalue { i64, i1 } [[TMP5685]], 1
// CHECK-NEXT:    [[TMP5689:%.*]] = select i1 [[TMP5688]], double [[TMP5681]], double [[TMP5687]]
// CHECK-NEXT:    store double [[TMP5689]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP5690:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5691:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5692:%.*]] = bitcast double [[TMP5690]] to i64
// CHECK-NEXT:    [[TMP5693:%.*]] = bitcast double [[TMP5691]] to i64
// CHECK-NEXT:    [[TMP5694:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5692]], i64 [[TMP5693]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5695:%.*]] = extractvalue { i64, i1 } [[TMP5694]], 0
// CHECK-NEXT:    [[TMP5696:%.*]] = bitcast i64 [[TMP5695]] to double
// CHECK-NEXT:    [[TMP5697:%.*]] = extractvalue { i64, i1 } [[TMP5694]], 1
// CHECK-NEXT:    br i1 [[TMP5697]], label [[DX_ATOMIC_EXIT529:%.*]], label [[DX_ATOMIC_CONT530:%.*]]
// CHECK:       dx.atomic.cont530:
// CHECK-NEXT:    store double [[TMP5696]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT529]]
// CHECK:       dx.atomic.exit529:
// CHECK-NEXT:    [[TMP5698:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5699:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5700:%.*]] = bitcast double [[TMP5698]] to i64
// CHECK-NEXT:    [[TMP5701:%.*]] = bitcast double [[TMP5699]] to i64
// CHECK-NEXT:    [[TMP5702:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5700]], i64 [[TMP5701]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5703:%.*]] = extractvalue { i64, i1 } [[TMP5702]], 0
// CHECK-NEXT:    [[TMP5704:%.*]] = bitcast i64 [[TMP5703]] to double
// CHECK-NEXT:    [[TMP5705:%.*]] = extractvalue { i64, i1 } [[TMP5702]], 1
// CHECK-NEXT:    br i1 [[TMP5705]], label [[DX_ATOMIC_EXIT531:%.*]], label [[DX_ATOMIC_CONT532:%.*]]
// CHECK:       dx.atomic.cont532:
// CHECK-NEXT:    store double [[TMP5704]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT531]]
// CHECK:       dx.atomic.exit531:
// CHECK-NEXT:    [[TMP5706:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5707:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5708:%.*]] = bitcast double [[TMP5706]] to i64
// CHECK-NEXT:    [[TMP5709:%.*]] = bitcast double [[TMP5707]] to i64
// CHECK-NEXT:    [[TMP5710:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5708]], i64 [[TMP5709]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5711:%.*]] = extractvalue { i64, i1 } [[TMP5710]], 1
// CHECK-NEXT:    [[TMP5712:%.*]] = sext i1 [[TMP5711]] to i32
// CHECK-NEXT:    store i32 [[TMP5712]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5713:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5714:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5715:%.*]] = bitcast double [[TMP5713]] to i64
// CHECK-NEXT:    [[TMP5716:%.*]] = bitcast double [[TMP5714]] to i64
// CHECK-NEXT:    [[TMP5717:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5715]], i64 [[TMP5716]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5718:%.*]] = extractvalue { i64, i1 } [[TMP5717]], 1
// CHECK-NEXT:    [[TMP5719:%.*]] = sext i1 [[TMP5718]] to i32
// CHECK-NEXT:    store i32 [[TMP5719]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5720:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5721:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5722:%.*]] = bitcast double [[TMP5720]] to i64
// CHECK-NEXT:    [[TMP5723:%.*]] = bitcast double [[TMP5721]] to i64
// CHECK-NEXT:    [[TMP5724:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5722]], i64 [[TMP5723]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5725:%.*]] = extractvalue { i64, i1 } [[TMP5724]], 0
// CHECK-NEXT:    [[TMP5726:%.*]] = bitcast i64 [[TMP5725]] to double
// CHECK-NEXT:    [[TMP5727:%.*]] = extractvalue { i64, i1 } [[TMP5724]], 1
// CHECK-NEXT:    br i1 [[TMP5727]], label [[DX_ATOMIC_EXIT533:%.*]], label [[DX_ATOMIC_CONT534:%.*]]
// CHECK:       dx.atomic.cont534:
// CHECK-NEXT:    store double [[TMP5726]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT533]]
// CHECK:       dx.atomic.exit533:
// CHECK-NEXT:    [[TMP5728:%.*]] = extractvalue { i64, i1 } [[TMP5724]], 1
// CHECK-NEXT:    [[TMP5729:%.*]] = sext i1 [[TMP5728]] to i32
// CHECK-NEXT:    store i32 [[TMP5729]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5730:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5731:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5732:%.*]] = bitcast double [[TMP5730]] to i64
// CHECK-NEXT:    [[TMP5733:%.*]] = bitcast double [[TMP5731]] to i64
// CHECK-NEXT:    [[TMP5734:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5732]], i64 [[TMP5733]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP5735:%.*]] = extractvalue { i64, i1 } [[TMP5734]], 0
// CHECK-NEXT:    [[TMP5736:%.*]] = bitcast i64 [[TMP5735]] to double
// CHECK-NEXT:    [[TMP5737:%.*]] = extractvalue { i64, i1 } [[TMP5734]], 1
// CHECK-NEXT:    br i1 [[TMP5737]], label [[DX_ATOMIC_EXIT535:%.*]], label [[DX_ATOMIC_CONT536:%.*]]
// CHECK:       dx.atomic.cont536:
// CHECK-NEXT:    store double [[TMP5736]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT535]]
// CHECK:       dx.atomic.exit535:
// CHECK-NEXT:    [[TMP5738:%.*]] = extractvalue { i64, i1 } [[TMP5734]], 1
// CHECK-NEXT:    [[TMP5739:%.*]] = sext i1 [[TMP5738]] to i32
// CHECK-NEXT:    store i32 [[TMP5739]], ptr [[IR]], align 4
// CHECK-NEXT:    [[TMP5740:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5741:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5740]] release, align 8
// CHECK-NEXT:    store double [[TMP5741]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5742:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5743:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5742]] release, align 8
// CHECK-NEXT:    store double [[TMP5743]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5744:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5745:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5744]] release, align 8
// CHECK-NEXT:    store double [[TMP5745]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5746:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5747:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5746]] release, align 8
// CHECK-NEXT:    store double [[TMP5747]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5748:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5749:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5750:%.*]] = bitcast double [[TMP5748]] to i64
// CHECK-NEXT:    [[TMP5751:%.*]] = bitcast double [[TMP5749]] to i64
// CHECK-NEXT:    [[TMP5752:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5750]], i64 [[TMP5751]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5753:%.*]] = extractvalue { i64, i1 } [[TMP5752]], 0
// CHECK-NEXT:    [[TMP5754:%.*]] = bitcast i64 [[TMP5753]] to double
// CHECK-NEXT:    store double [[TMP5754]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5755:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5756:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5757:%.*]] = bitcast double [[TMP5755]] to i64
// CHECK-NEXT:    [[TMP5758:%.*]] = bitcast double [[TMP5756]] to i64
// CHECK-NEXT:    [[TMP5759:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5757]], i64 [[TMP5758]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5760:%.*]] = extractvalue { i64, i1 } [[TMP5759]], 0
// CHECK-NEXT:    [[TMP5761:%.*]] = bitcast i64 [[TMP5760]] to double
// CHECK-NEXT:    store double [[TMP5761]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5762:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5763:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5762]] release, align 8
// CHECK-NEXT:    [[TMP5764:%.*]] = fcmp ogt double [[TMP5763]], [[TMP5762]]
// CHECK-NEXT:    [[TMP5765:%.*]] = select i1 [[TMP5764]], double [[TMP5762]], double [[TMP5763]]
// CHECK-NEXT:    store double [[TMP5765]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5766:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5767:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5766]] release, align 8
// CHECK-NEXT:    [[TMP5768:%.*]] = fcmp olt double [[TMP5767]], [[TMP5766]]
// CHECK-NEXT:    [[TMP5769:%.*]] = select i1 [[TMP5768]], double [[TMP5766]], double [[TMP5767]]
// CHECK-NEXT:    store double [[TMP5769]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5770:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5771:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5770]] release, align 8
// CHECK-NEXT:    [[TMP5772:%.*]] = fcmp olt double [[TMP5771]], [[TMP5770]]
// CHECK-NEXT:    [[TMP5773:%.*]] = select i1 [[TMP5772]], double [[TMP5770]], double [[TMP5771]]
// CHECK-NEXT:    store double [[TMP5773]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5774:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5775:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5774]] release, align 8
// CHECK-NEXT:    [[TMP5776:%.*]] = fcmp ogt double [[TMP5775]], [[TMP5774]]
// CHECK-NEXT:    [[TMP5777:%.*]] = select i1 [[TMP5776]], double [[TMP5774]], double [[TMP5775]]
// CHECK-NEXT:    store double [[TMP5777]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5778:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5779:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5780:%.*]] = bitcast double [[TMP5778]] to i64
// CHECK-NEXT:    [[TMP5781:%.*]] = bitcast double [[TMP5779]] to i64
// CHECK-NEXT:    [[TMP5782:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5780]], i64 [[TMP5781]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5783:%.*]] = extractvalue { i64, i1 } [[TMP5782]], 0
// CHECK-NEXT:    [[TMP5784:%.*]] = bitcast i64 [[TMP5783]] to double
// CHECK-NEXT:    [[TMP5785:%.*]] = extractvalue { i64, i1 } [[TMP5782]], 1
// CHECK-NEXT:    [[TMP5786:%.*]] = select i1 [[TMP5785]], double [[TMP5778]], double [[TMP5784]]
// CHECK-NEXT:    store double [[TMP5786]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5787:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5788:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5789:%.*]] = bitcast double [[TMP5787]] to i64
// CHECK-NEXT:    [[TMP5790:%.*]] = bitcast double [[TMP5788]] to i64
// CHECK-NEXT:    [[TMP5791:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5789]], i64 [[TMP5790]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5792:%.*]] = extractvalue { i64, i1 } [[TMP5791]], 0
// CHECK-NEXT:    [[TMP5793:%.*]] = bitcast i64 [[TMP5792]] to double
// CHECK-NEXT:    [[TMP5794:%.*]] = extractvalue { i64, i1 } [[TMP5791]], 1
// CHECK-NEXT:    [[TMP5795:%.*]] = select i1 [[TMP5794]], double [[TMP5787]], double [[TMP5793]]
// CHECK-NEXT:    store double [[TMP5795]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5796:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5797:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5798:%.*]] = bitcast double [[TMP5796]] to i64
// CHECK-NEXT:    [[TMP5799:%.*]] = bitcast double [[TMP5797]] to i64
// CHECK-NEXT:    [[TMP5800:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5798]], i64 [[TMP5799]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5801:%.*]] = extractvalue { i64, i1 } [[TMP5800]], 0
// CHECK-NEXT:    [[TMP5802:%.*]] = bitcast i64 [[TMP5801]] to double
// CHECK-NEXT:    [[TMP5803:%.*]] = extractvalue { i64, i1 } [[TMP5800]], 1
// CHECK-NEXT:    br i1 [[TMP5803]], label [[DX_ATOMIC_EXIT537:%.*]], label [[DX_ATOMIC_CONT538:%.*]]
// CHECK:       dx.atomic.cont538:
// CHECK-NEXT:    store double [[TMP5802]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT537]]
// CHECK:       dx.atomic.exit537:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5804:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5805:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5806:%.*]] = bitcast double [[TMP5804]] to i64
// CHECK-NEXT:    [[TMP5807:%.*]] = bitcast double [[TMP5805]] to i64
// CHECK-NEXT:    [[TMP5808:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5806]], i64 [[TMP5807]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5809:%.*]] = extractvalue { i64, i1 } [[TMP5808]], 0
// CHECK-NEXT:    [[TMP5810:%.*]] = bitcast i64 [[TMP5809]] to double
// CHECK-NEXT:    [[TMP5811:%.*]] = extractvalue { i64, i1 } [[TMP5808]], 1
// CHECK-NEXT:    br i1 [[TMP5811]], label [[DX_ATOMIC_EXIT539:%.*]], label [[DX_ATOMIC_CONT540:%.*]]
// CHECK:       dx.atomic.cont540:
// CHECK-NEXT:    store double [[TMP5810]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT539]]
// CHECK:       dx.atomic.exit539:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5812:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5813:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5814:%.*]] = bitcast double [[TMP5812]] to i64
// CHECK-NEXT:    [[TMP5815:%.*]] = bitcast double [[TMP5813]] to i64
// CHECK-NEXT:    [[TMP5816:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5814]], i64 [[TMP5815]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5817:%.*]] = extractvalue { i64, i1 } [[TMP5816]], 1
// CHECK-NEXT:    [[TMP5818:%.*]] = sext i1 [[TMP5817]] to i32
// CHECK-NEXT:    store i32 [[TMP5818]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5819:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5820:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5821:%.*]] = bitcast double [[TMP5819]] to i64
// CHECK-NEXT:    [[TMP5822:%.*]] = bitcast double [[TMP5820]] to i64
// CHECK-NEXT:    [[TMP5823:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5821]], i64 [[TMP5822]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5824:%.*]] = extractvalue { i64, i1 } [[TMP5823]], 1
// CHECK-NEXT:    [[TMP5825:%.*]] = sext i1 [[TMP5824]] to i32
// CHECK-NEXT:    store i32 [[TMP5825]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5826:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5827:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5828:%.*]] = bitcast double [[TMP5826]] to i64
// CHECK-NEXT:    [[TMP5829:%.*]] = bitcast double [[TMP5827]] to i64
// CHECK-NEXT:    [[TMP5830:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5828]], i64 [[TMP5829]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5831:%.*]] = extractvalue { i64, i1 } [[TMP5830]], 0
// CHECK-NEXT:    [[TMP5832:%.*]] = bitcast i64 [[TMP5831]] to double
// CHECK-NEXT:    [[TMP5833:%.*]] = extractvalue { i64, i1 } [[TMP5830]], 1
// CHECK-NEXT:    br i1 [[TMP5833]], label [[DX_ATOMIC_EXIT541:%.*]], label [[DX_ATOMIC_CONT542:%.*]]
// CHECK:       dx.atomic.cont542:
// CHECK-NEXT:    store double [[TMP5832]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT541]]
// CHECK:       dx.atomic.exit541:
// CHECK-NEXT:    [[TMP5834:%.*]] = extractvalue { i64, i1 } [[TMP5830]], 1
// CHECK-NEXT:    [[TMP5835:%.*]] = sext i1 [[TMP5834]] to i32
// CHECK-NEXT:    store i32 [[TMP5835]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5836:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5837:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5838:%.*]] = bitcast double [[TMP5836]] to i64
// CHECK-NEXT:    [[TMP5839:%.*]] = bitcast double [[TMP5837]] to i64
// CHECK-NEXT:    [[TMP5840:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5838]], i64 [[TMP5839]] release monotonic, align 8
// CHECK-NEXT:    [[TMP5841:%.*]] = extractvalue { i64, i1 } [[TMP5840]], 0
// CHECK-NEXT:    [[TMP5842:%.*]] = bitcast i64 [[TMP5841]] to double
// CHECK-NEXT:    [[TMP5843:%.*]] = extractvalue { i64, i1 } [[TMP5840]], 1
// CHECK-NEXT:    br i1 [[TMP5843]], label [[DX_ATOMIC_EXIT543:%.*]], label [[DX_ATOMIC_CONT544:%.*]]
// CHECK:       dx.atomic.cont544:
// CHECK-NEXT:    store double [[TMP5842]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT543]]
// CHECK:       dx.atomic.exit543:
// CHECK-NEXT:    [[TMP5844:%.*]] = extractvalue { i64, i1 } [[TMP5840]], 1
// CHECK-NEXT:    [[TMP5845:%.*]] = sext i1 [[TMP5844]] to i32
// CHECK-NEXT:    store i32 [[TMP5845]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5846:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5847:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5846]] seq_cst, align 8
// CHECK-NEXT:    store double [[TMP5847]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5848:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5849:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5848]] seq_cst, align 8
// CHECK-NEXT:    store double [[TMP5849]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5850:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5851:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5850]] seq_cst, align 8
// CHECK-NEXT:    store double [[TMP5851]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5852:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5853:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5852]] seq_cst, align 8
// CHECK-NEXT:    store double [[TMP5853]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5854:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5855:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5856:%.*]] = bitcast double [[TMP5854]] to i64
// CHECK-NEXT:    [[TMP5857:%.*]] = bitcast double [[TMP5855]] to i64
// CHECK-NEXT:    [[TMP5858:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5856]], i64 [[TMP5857]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5859:%.*]] = extractvalue { i64, i1 } [[TMP5858]], 0
// CHECK-NEXT:    [[TMP5860:%.*]] = bitcast i64 [[TMP5859]] to double
// CHECK-NEXT:    store double [[TMP5860]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5861:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5862:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5863:%.*]] = bitcast double [[TMP5861]] to i64
// CHECK-NEXT:    [[TMP5864:%.*]] = bitcast double [[TMP5862]] to i64
// CHECK-NEXT:    [[TMP5865:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5863]], i64 [[TMP5864]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5866:%.*]] = extractvalue { i64, i1 } [[TMP5865]], 0
// CHECK-NEXT:    [[TMP5867:%.*]] = bitcast i64 [[TMP5866]] to double
// CHECK-NEXT:    store double [[TMP5867]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5868:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5869:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5868]] seq_cst, align 8
// CHECK-NEXT:    [[TMP5870:%.*]] = fcmp ogt double [[TMP5869]], [[TMP5868]]
// CHECK-NEXT:    [[TMP5871:%.*]] = select i1 [[TMP5870]], double [[TMP5868]], double [[TMP5869]]
// CHECK-NEXT:    store double [[TMP5871]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5872:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5873:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5872]] seq_cst, align 8
// CHECK-NEXT:    [[TMP5874:%.*]] = fcmp olt double [[TMP5873]], [[TMP5872]]
// CHECK-NEXT:    [[TMP5875:%.*]] = select i1 [[TMP5874]], double [[TMP5872]], double [[TMP5873]]
// CHECK-NEXT:    store double [[TMP5875]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5876:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5877:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP5876]] seq_cst, align 8
// CHECK-NEXT:    [[TMP5878:%.*]] = fcmp olt double [[TMP5877]], [[TMP5876]]
// CHECK-NEXT:    [[TMP5879:%.*]] = select i1 [[TMP5878]], double [[TMP5876]], double [[TMP5877]]
// CHECK-NEXT:    store double [[TMP5879]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5880:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5881:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP5880]] seq_cst, align 8
// CHECK-NEXT:    [[TMP5882:%.*]] = fcmp ogt double [[TMP5881]], [[TMP5880]]
// CHECK-NEXT:    [[TMP5883:%.*]] = select i1 [[TMP5882]], double [[TMP5880]], double [[TMP5881]]
// CHECK-NEXT:    store double [[TMP5883]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5884:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5885:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5886:%.*]] = bitcast double [[TMP5884]] to i64
// CHECK-NEXT:    [[TMP5887:%.*]] = bitcast double [[TMP5885]] to i64
// CHECK-NEXT:    [[TMP5888:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5886]], i64 [[TMP5887]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5889:%.*]] = extractvalue { i64, i1 } [[TMP5888]], 0
// CHECK-NEXT:    [[TMP5890:%.*]] = bitcast i64 [[TMP5889]] to double
// CHECK-NEXT:    [[TMP5891:%.*]] = extractvalue { i64, i1 } [[TMP5888]], 1
// CHECK-NEXT:    [[TMP5892:%.*]] = select i1 [[TMP5891]], double [[TMP5884]], double [[TMP5890]]
// CHECK-NEXT:    store double [[TMP5892]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5893:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5894:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5895:%.*]] = bitcast double [[TMP5893]] to i64
// CHECK-NEXT:    [[TMP5896:%.*]] = bitcast double [[TMP5894]] to i64
// CHECK-NEXT:    [[TMP5897:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5895]], i64 [[TMP5896]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5898:%.*]] = extractvalue { i64, i1 } [[TMP5897]], 0
// CHECK-NEXT:    [[TMP5899:%.*]] = bitcast i64 [[TMP5898]] to double
// CHECK-NEXT:    [[TMP5900:%.*]] = extractvalue { i64, i1 } [[TMP5897]], 1
// CHECK-NEXT:    [[TMP5901:%.*]] = select i1 [[TMP5900]], double [[TMP5893]], double [[TMP5899]]
// CHECK-NEXT:    store double [[TMP5901]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5902:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5903:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5904:%.*]] = bitcast double [[TMP5902]] to i64
// CHECK-NEXT:    [[TMP5905:%.*]] = bitcast double [[TMP5903]] to i64
// CHECK-NEXT:    [[TMP5906:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5904]], i64 [[TMP5905]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5907:%.*]] = extractvalue { i64, i1 } [[TMP5906]], 0
// CHECK-NEXT:    [[TMP5908:%.*]] = bitcast i64 [[TMP5907]] to double
// CHECK-NEXT:    [[TMP5909:%.*]] = extractvalue { i64, i1 } [[TMP5906]], 1
// CHECK-NEXT:    br i1 [[TMP5909]], label [[DX_ATOMIC_EXIT545:%.*]], label [[DX_ATOMIC_CONT546:%.*]]
// CHECK:       dx.atomic.cont546:
// CHECK-NEXT:    store double [[TMP5908]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT545]]
// CHECK:       dx.atomic.exit545:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5910:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5911:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5912:%.*]] = bitcast double [[TMP5910]] to i64
// CHECK-NEXT:    [[TMP5913:%.*]] = bitcast double [[TMP5911]] to i64
// CHECK-NEXT:    [[TMP5914:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5912]], i64 [[TMP5913]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5915:%.*]] = extractvalue { i64, i1 } [[TMP5914]], 0
// CHECK-NEXT:    [[TMP5916:%.*]] = bitcast i64 [[TMP5915]] to double
// CHECK-NEXT:    [[TMP5917:%.*]] = extractvalue { i64, i1 } [[TMP5914]], 1
// CHECK-NEXT:    br i1 [[TMP5917]], label [[DX_ATOMIC_EXIT547:%.*]], label [[DX_ATOMIC_CONT548:%.*]]
// CHECK:       dx.atomic.cont548:
// CHECK-NEXT:    store double [[TMP5916]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT547]]
// CHECK:       dx.atomic.exit547:
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5918:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5919:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5920:%.*]] = bitcast double [[TMP5918]] to i64
// CHECK-NEXT:    [[TMP5921:%.*]] = bitcast double [[TMP5919]] to i64
// CHECK-NEXT:    [[TMP5922:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5920]], i64 [[TMP5921]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5923:%.*]] = extractvalue { i64, i1 } [[TMP5922]], 1
// CHECK-NEXT:    [[TMP5924:%.*]] = sext i1 [[TMP5923]] to i32
// CHECK-NEXT:    store i32 [[TMP5924]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5925:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5926:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5927:%.*]] = bitcast double [[TMP5925]] to i64
// CHECK-NEXT:    [[TMP5928:%.*]] = bitcast double [[TMP5926]] to i64
// CHECK-NEXT:    [[TMP5929:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5927]], i64 [[TMP5928]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5930:%.*]] = extractvalue { i64, i1 } [[TMP5929]], 1
// CHECK-NEXT:    [[TMP5931:%.*]] = sext i1 [[TMP5930]] to i32
// CHECK-NEXT:    store i32 [[TMP5931]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5932:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5933:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5934:%.*]] = bitcast double [[TMP5932]] to i64
// CHECK-NEXT:    [[TMP5935:%.*]] = bitcast double [[TMP5933]] to i64
// CHECK-NEXT:    [[TMP5936:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5934]], i64 [[TMP5935]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5937:%.*]] = extractvalue { i64, i1 } [[TMP5936]], 0
// CHECK-NEXT:    [[TMP5938:%.*]] = bitcast i64 [[TMP5937]] to double
// CHECK-NEXT:    [[TMP5939:%.*]] = extractvalue { i64, i1 } [[TMP5936]], 1
// CHECK-NEXT:    br i1 [[TMP5939]], label [[DX_ATOMIC_EXIT549:%.*]], label [[DX_ATOMIC_CONT550:%.*]]
// CHECK:       dx.atomic.cont550:
// CHECK-NEXT:    store double [[TMP5938]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT549]]
// CHECK:       dx.atomic.exit549:
// CHECK-NEXT:    [[TMP5940:%.*]] = extractvalue { i64, i1 } [[TMP5936]], 1
// CHECK-NEXT:    [[TMP5941:%.*]] = sext i1 [[TMP5940]] to i32
// CHECK-NEXT:    store i32 [[TMP5941]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP5942:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5943:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP5944:%.*]] = bitcast double [[TMP5942]] to i64
// CHECK-NEXT:    [[TMP5945:%.*]] = bitcast double [[TMP5943]] to i64
// CHECK-NEXT:    [[TMP5946:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP5944]], i64 [[TMP5945]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP5947:%.*]] = extractvalue { i64, i1 } [[TMP5946]], 0
// CHECK-NEXT:    [[TMP5948:%.*]] = bitcast i64 [[TMP5947]] to double
// CHECK-NEXT:    [[TMP5949:%.*]] = extractvalue { i64, i1 } [[TMP5946]], 1
// CHECK-NEXT:    br i1 [[TMP5949]], label [[DX_ATOMIC_EXIT551:%.*]], label [[DX_ATOMIC_CONT552:%.*]]
// CHECK:       dx.atomic.cont552:
// CHECK-NEXT:    store double [[TMP5948]], ptr [[DV]], align 8
// CHECK-NEXT:    br label [[DX_ATOMIC_EXIT551]]
// CHECK:       dx.atomic.exit551:
// CHECK-NEXT:    [[TMP5950:%.*]] = extractvalue { i64, i1 } [[TMP5946]], 1
// CHECK-NEXT:    [[TMP5951:%.*]] = sext i1 [[TMP5950]] to i32
// CHECK-NEXT:    store i32 [[TMP5951]], ptr [[IR]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    ret void
//
//
// CHECK-LABEL: @cxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[CX:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CV:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CE:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[CD:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[TMP0:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP0]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP1]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP2]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP3]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP4:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP5:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP4]], i8 [[TMP5]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i8, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i8 [[TMP7]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP8]] monotonic, align 1
// CHECK-NEXT:    [[TMP10:%.*]] = icmp slt i8 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i8 [[TMP8]], i8 [[TMP9]]
// CHECK-NEXT:    store i8 [[TMP11]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP12]] monotonic, align 1
// CHECK-NEXT:    [[TMP14:%.*]] = icmp sgt i8 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i8 [[TMP12]], i8 [[TMP13]]
// CHECK-NEXT:    store i8 [[TMP15]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP16:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP17:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP16]], i8 [[TMP17]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i8, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i8, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i8 [[TMP16]], i8 [[TMP19]]
// CHECK-NEXT:    store i8 [[TMP21]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP22:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP22]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP23]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP24]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP25]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP27:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP26]], i8 [[TMP27]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i8, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i8 [[TMP29]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP30]] acq_rel, align 1
// CHECK-NEXT:    [[TMP32:%.*]] = icmp slt i8 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i8 [[TMP30]], i8 [[TMP31]]
// CHECK-NEXT:    store i8 [[TMP33]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP34]] acq_rel, align 1
// CHECK-NEXT:    [[TMP36:%.*]] = icmp sgt i8 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i8 [[TMP34]], i8 [[TMP35]]
// CHECK-NEXT:    store i8 [[TMP37]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP39:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP38]], i8 [[TMP39]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i8, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i8, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i8 [[TMP38]], i8 [[TMP41]]
// CHECK-NEXT:    store i8 [[TMP43]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP44]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP45]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP46:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP46]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP47]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP48:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP49:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP48]], i8 [[TMP49]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i8, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i8 [[TMP51]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP52:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP52]] acquire, align 1
// CHECK-NEXT:    [[TMP54:%.*]] = icmp slt i8 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i8 [[TMP52]], i8 [[TMP53]]
// CHECK-NEXT:    store i8 [[TMP55]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP56:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP56]] acquire, align 1
// CHECK-NEXT:    [[TMP58:%.*]] = icmp sgt i8 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i8 [[TMP56]], i8 [[TMP57]]
// CHECK-NEXT:    store i8 [[TMP59]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP60:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP61:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP60]], i8 [[TMP61]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i8, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i8, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i8 [[TMP60]], i8 [[TMP63]]
// CHECK-NEXT:    store i8 [[TMP65]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP66:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP66]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP67]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP68:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP68]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP69]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP70:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP71:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP70]], i8 [[TMP71]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i8, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i8 [[TMP73]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP74:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP74]] monotonic, align 1
// CHECK-NEXT:    [[TMP76:%.*]] = icmp slt i8 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i8 [[TMP74]], i8 [[TMP75]]
// CHECK-NEXT:    store i8 [[TMP77]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP78:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP78]] monotonic, align 1
// CHECK-NEXT:    [[TMP80:%.*]] = icmp sgt i8 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i8 [[TMP78]], i8 [[TMP79]]
// CHECK-NEXT:    store i8 [[TMP81]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP82:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP83:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP82]], i8 [[TMP83]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i8, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i8, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i8 [[TMP82]], i8 [[TMP85]]
// CHECK-NEXT:    store i8 [[TMP87]], ptr [[CV]], align 1
// CHECK-NEXT:    [[TMP88:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP88]] release, align 1
// CHECK-NEXT:    store i8 [[TMP89]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP90]] release, align 1
// CHECK-NEXT:    store i8 [[TMP91]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP93:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP92]], i8 [[TMP93]] release monotonic, align 1
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i8, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i8 [[TMP95]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP96]] release, align 1
// CHECK-NEXT:    [[TMP98:%.*]] = icmp slt i8 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i8 [[TMP96]], i8 [[TMP97]]
// CHECK-NEXT:    store i8 [[TMP99]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP100]] release, align 1
// CHECK-NEXT:    [[TMP102:%.*]] = icmp sgt i8 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i8 [[TMP100]], i8 [[TMP101]]
// CHECK-NEXT:    store i8 [[TMP103]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP105:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP104]], i8 [[TMP105]] release monotonic, align 1
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i8, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i8, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i8 [[TMP104]], i8 [[TMP107]]
// CHECK-NEXT:    store i8 [[TMP109]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP110]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP111]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP112]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP113]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP115:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP114]], i8 [[TMP115]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i8, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i8 [[TMP117]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP118]] seq_cst, align 1
// CHECK-NEXT:    [[TMP120:%.*]] = icmp slt i8 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i8 [[TMP118]], i8 [[TMP119]]
// CHECK-NEXT:    store i8 [[TMP121]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP122]] seq_cst, align 1
// CHECK-NEXT:    [[TMP124:%.*]] = icmp sgt i8 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i8 [[TMP122]], i8 [[TMP123]]
// CHECK-NEXT:    store i8 [[TMP125]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT:    [[TMP127:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP126]], i8 [[TMP127]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i8, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i8, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i8 [[TMP126]], i8 [[TMP129]]
// CHECK-NEXT:    store i8 [[TMP131]], ptr [[CV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i8, ptr [[CV]], align 1
// CHECK-NEXT:    ret i8 [[TMP132]]
//
//
// CHECK-LABEL: @ucxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[UCX:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCV:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCE:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[UCD:%.*]] = alloca i8, align 1
// CHECK-NEXT:    [[TMP0:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP0]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP1]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP2]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP3]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP4:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP5:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP4]], i8 [[TMP5]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i8, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i8 [[TMP7]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP8:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP8]] monotonic, align 1
// CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i8 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i8 [[TMP8]], i8 [[TMP9]]
// CHECK-NEXT:    store i8 [[TMP11]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP12:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP12]] monotonic, align 1
// CHECK-NEXT:    [[TMP14:%.*]] = icmp ugt i8 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i8 [[TMP12]], i8 [[TMP13]]
// CHECK-NEXT:    store i8 [[TMP15]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP16:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP17:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP16]], i8 [[TMP17]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i8, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i8, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i8 [[TMP16]], i8 [[TMP19]]
// CHECK-NEXT:    store i8 [[TMP21]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP22:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP22]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP23]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP24]] acq_rel, align 1
// CHECK-NEXT:    store i8 [[TMP25]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP27:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP26]], i8 [[TMP27]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i8, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i8 [[TMP29]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP30]] acq_rel, align 1
// CHECK-NEXT:    [[TMP32:%.*]] = icmp ult i8 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i8 [[TMP30]], i8 [[TMP31]]
// CHECK-NEXT:    store i8 [[TMP33]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP34]] acq_rel, align 1
// CHECK-NEXT:    [[TMP36:%.*]] = icmp ugt i8 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i8 [[TMP34]], i8 [[TMP35]]
// CHECK-NEXT:    store i8 [[TMP37]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP39:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP38]], i8 [[TMP39]] acq_rel acquire, align 1
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i8, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i8, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i8 [[TMP38]], i8 [[TMP41]]
// CHECK-NEXT:    store i8 [[TMP43]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP44]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP45]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP46:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP46]] acquire, align 1
// CHECK-NEXT:    store i8 [[TMP47]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP48:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP49:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP48]], i8 [[TMP49]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i8, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i8 [[TMP51]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP52:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP52]] acquire, align 1
// CHECK-NEXT:    [[TMP54:%.*]] = icmp ult i8 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i8 [[TMP52]], i8 [[TMP53]]
// CHECK-NEXT:    store i8 [[TMP55]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP56:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP56]] acquire, align 1
// CHECK-NEXT:    [[TMP58:%.*]] = icmp ugt i8 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i8 [[TMP56]], i8 [[TMP57]]
// CHECK-NEXT:    store i8 [[TMP59]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP60:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP61:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP60]], i8 [[TMP61]] acquire acquire, align 1
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i8, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i8, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i8 [[TMP60]], i8 [[TMP63]]
// CHECK-NEXT:    store i8 [[TMP65]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP66:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP66]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP67]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP68:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP68]] monotonic, align 1
// CHECK-NEXT:    store i8 [[TMP69]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP70:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP71:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP70]], i8 [[TMP71]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i8, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i8 [[TMP73]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP74:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP74]] monotonic, align 1
// CHECK-NEXT:    [[TMP76:%.*]] = icmp ult i8 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i8 [[TMP74]], i8 [[TMP75]]
// CHECK-NEXT:    store i8 [[TMP77]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP78:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP78]] monotonic, align 1
// CHECK-NEXT:    [[TMP80:%.*]] = icmp ugt i8 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i8 [[TMP78]], i8 [[TMP79]]
// CHECK-NEXT:    store i8 [[TMP81]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP82:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP83:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP82]], i8 [[TMP83]] monotonic monotonic, align 1
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i8, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i8, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i8 [[TMP82]], i8 [[TMP85]]
// CHECK-NEXT:    store i8 [[TMP87]], ptr [[UCV]], align 1
// CHECK-NEXT:    [[TMP88:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP88]] release, align 1
// CHECK-NEXT:    store i8 [[TMP89]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP90]] release, align 1
// CHECK-NEXT:    store i8 [[TMP91]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP93:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP92]], i8 [[TMP93]] release monotonic, align 1
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i8, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i8 [[TMP95]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP96]] release, align 1
// CHECK-NEXT:    [[TMP98:%.*]] = icmp ult i8 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i8 [[TMP96]], i8 [[TMP97]]
// CHECK-NEXT:    store i8 [[TMP99]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP100]] release, align 1
// CHECK-NEXT:    [[TMP102:%.*]] = icmp ugt i8 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i8 [[TMP100]], i8 [[TMP101]]
// CHECK-NEXT:    store i8 [[TMP103]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP105:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP104]], i8 [[TMP105]] release monotonic, align 1
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i8, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i8, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i8 [[TMP104]], i8 [[TMP107]]
// CHECK-NEXT:    store i8 [[TMP109]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP110]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP111]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP112]] seq_cst, align 1
// CHECK-NEXT:    store i8 [[TMP113]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP115:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP114]], i8 [[TMP115]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i8, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i8 [[TMP117]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP118]] seq_cst, align 1
// CHECK-NEXT:    [[TMP120:%.*]] = icmp ult i8 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i8 [[TMP118]], i8 [[TMP119]]
// CHECK-NEXT:    store i8 [[TMP121]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP122]] seq_cst, align 1
// CHECK-NEXT:    [[TMP124:%.*]] = icmp ugt i8 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i8 [[TMP122]], i8 [[TMP123]]
// CHECK-NEXT:    store i8 [[TMP125]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT:    [[TMP127:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP126]], i8 [[TMP127]] seq_cst seq_cst, align 1
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i8, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i8, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i8 [[TMP126]], i8 [[TMP129]]
// CHECK-NEXT:    store i8 [[TMP131]], ptr [[UCV]], align 1
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i8, ptr [[UCV]], align 1
// CHECK-NEXT:    ret i8 [[TMP132]]
//
//
// CHECK-LABEL: @sxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[SX:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SV:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SE:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[SD:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP0]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP2:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP2]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP3]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP4:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP5:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP4]], i16 [[TMP5]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i16, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i16 [[TMP7]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP8:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP8]] monotonic, align 2
// CHECK-NEXT:    [[TMP10:%.*]] = icmp slt i16 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i16 [[TMP8]], i16 [[TMP9]]
// CHECK-NEXT:    store i16 [[TMP11]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP12:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP12]] monotonic, align 2
// CHECK-NEXT:    [[TMP14:%.*]] = icmp sgt i16 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i16 [[TMP12]], i16 [[TMP13]]
// CHECK-NEXT:    store i16 [[TMP15]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP16:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP17:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP16]], i16 [[TMP17]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i16, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i16, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i16 [[TMP16]], i16 [[TMP19]]
// CHECK-NEXT:    store i16 [[TMP21]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP22:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP22]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP23]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP24]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP25]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP27:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP26]], i16 [[TMP27]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i16, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i16 [[TMP29]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP30]] acq_rel, align 2
// CHECK-NEXT:    [[TMP32:%.*]] = icmp slt i16 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i16 [[TMP30]], i16 [[TMP31]]
// CHECK-NEXT:    store i16 [[TMP33]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP34]] acq_rel, align 2
// CHECK-NEXT:    [[TMP36:%.*]] = icmp sgt i16 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i16 [[TMP34]], i16 [[TMP35]]
// CHECK-NEXT:    store i16 [[TMP37]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP39:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP38]], i16 [[TMP39]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i16, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i16, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i16 [[TMP38]], i16 [[TMP41]]
// CHECK-NEXT:    store i16 [[TMP43]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP44]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP45]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP46:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP46]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP47]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP48:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP49:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP48]], i16 [[TMP49]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i16, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i16 [[TMP51]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP52:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP52]] acquire, align 2
// CHECK-NEXT:    [[TMP54:%.*]] = icmp slt i16 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i16 [[TMP52]], i16 [[TMP53]]
// CHECK-NEXT:    store i16 [[TMP55]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP56:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP56]] acquire, align 2
// CHECK-NEXT:    [[TMP58:%.*]] = icmp sgt i16 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i16 [[TMP56]], i16 [[TMP57]]
// CHECK-NEXT:    store i16 [[TMP59]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP60:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP61:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP60]], i16 [[TMP61]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i16, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i16, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i16 [[TMP60]], i16 [[TMP63]]
// CHECK-NEXT:    store i16 [[TMP65]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP66:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP66]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP67]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP68:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP68]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP69]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP70:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP71:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP70]], i16 [[TMP71]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i16, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i16 [[TMP73]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP74:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP74]] monotonic, align 2
// CHECK-NEXT:    [[TMP76:%.*]] = icmp slt i16 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i16 [[TMP74]], i16 [[TMP75]]
// CHECK-NEXT:    store i16 [[TMP77]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP78:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP78]] monotonic, align 2
// CHECK-NEXT:    [[TMP80:%.*]] = icmp sgt i16 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i16 [[TMP78]], i16 [[TMP79]]
// CHECK-NEXT:    store i16 [[TMP81]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP82:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP83:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP82]], i16 [[TMP83]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i16, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i16, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i16 [[TMP82]], i16 [[TMP85]]
// CHECK-NEXT:    store i16 [[TMP87]], ptr [[SV]], align 2
// CHECK-NEXT:    [[TMP88:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP88]] release, align 2
// CHECK-NEXT:    store i16 [[TMP89]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP90]] release, align 2
// CHECK-NEXT:    store i16 [[TMP91]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP93:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP92]], i16 [[TMP93]] release monotonic, align 2
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i16, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i16 [[TMP95]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP96]] release, align 2
// CHECK-NEXT:    [[TMP98:%.*]] = icmp slt i16 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i16 [[TMP96]], i16 [[TMP97]]
// CHECK-NEXT:    store i16 [[TMP99]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP100]] release, align 2
// CHECK-NEXT:    [[TMP102:%.*]] = icmp sgt i16 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i16 [[TMP100]], i16 [[TMP101]]
// CHECK-NEXT:    store i16 [[TMP103]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP105:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP104]], i16 [[TMP105]] release monotonic, align 2
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i16, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i16, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i16 [[TMP104]], i16 [[TMP107]]
// CHECK-NEXT:    store i16 [[TMP109]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP110]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP111]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP112]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP113]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP115:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP114]], i16 [[TMP115]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i16, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i16 [[TMP117]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP118]] seq_cst, align 2
// CHECK-NEXT:    [[TMP120:%.*]] = icmp slt i16 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i16 [[TMP118]], i16 [[TMP119]]
// CHECK-NEXT:    store i16 [[TMP121]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP122]] seq_cst, align 2
// CHECK-NEXT:    [[TMP124:%.*]] = icmp sgt i16 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i16 [[TMP122]], i16 [[TMP123]]
// CHECK-NEXT:    store i16 [[TMP125]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT:    [[TMP127:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP126]], i16 [[TMP127]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i16, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i16, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i16 [[TMP126]], i16 [[TMP129]]
// CHECK-NEXT:    store i16 [[TMP131]], ptr [[SV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i16, ptr [[SV]], align 2
// CHECK-NEXT:    ret i16 [[TMP132]]
//
//
// CHECK-LABEL: @usxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[USX:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USV:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USE:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[USD:%.*]] = alloca i16, align 2
// CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP0]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP1]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP2:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP2]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP3]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP4:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP5:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP4]], i16 [[TMP5]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i16, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i16 [[TMP7]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP8:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP8]] monotonic, align 2
// CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i16 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i16 [[TMP8]], i16 [[TMP9]]
// CHECK-NEXT:    store i16 [[TMP11]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP12:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP12]] monotonic, align 2
// CHECK-NEXT:    [[TMP14:%.*]] = icmp ugt i16 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i16 [[TMP12]], i16 [[TMP13]]
// CHECK-NEXT:    store i16 [[TMP15]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP16:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP17:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP16]], i16 [[TMP17]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i16, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i16, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i16 [[TMP16]], i16 [[TMP19]]
// CHECK-NEXT:    store i16 [[TMP21]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP22:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP22]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP23]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP24]] acq_rel, align 2
// CHECK-NEXT:    store i16 [[TMP25]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP27:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP26]], i16 [[TMP27]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i16, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i16 [[TMP29]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP30]] acq_rel, align 2
// CHECK-NEXT:    [[TMP32:%.*]] = icmp ult i16 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i16 [[TMP30]], i16 [[TMP31]]
// CHECK-NEXT:    store i16 [[TMP33]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP34]] acq_rel, align 2
// CHECK-NEXT:    [[TMP36:%.*]] = icmp ugt i16 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i16 [[TMP34]], i16 [[TMP35]]
// CHECK-NEXT:    store i16 [[TMP37]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP39:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP38]], i16 [[TMP39]] acq_rel acquire, align 2
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i16, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i16, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i16 [[TMP38]], i16 [[TMP41]]
// CHECK-NEXT:    store i16 [[TMP43]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP44]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP45]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP46:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP46]] acquire, align 2
// CHECK-NEXT:    store i16 [[TMP47]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP48:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP49:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP48]], i16 [[TMP49]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i16, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i16 [[TMP51]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP52:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP52]] acquire, align 2
// CHECK-NEXT:    [[TMP54:%.*]] = icmp ult i16 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i16 [[TMP52]], i16 [[TMP53]]
// CHECK-NEXT:    store i16 [[TMP55]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP56:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP56]] acquire, align 2
// CHECK-NEXT:    [[TMP58:%.*]] = icmp ugt i16 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i16 [[TMP56]], i16 [[TMP57]]
// CHECK-NEXT:    store i16 [[TMP59]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP60:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP61:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP60]], i16 [[TMP61]] acquire acquire, align 2
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i16, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i16, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i16 [[TMP60]], i16 [[TMP63]]
// CHECK-NEXT:    store i16 [[TMP65]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP66:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP66]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP67]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP68:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP68]] monotonic, align 2
// CHECK-NEXT:    store i16 [[TMP69]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP70:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP71:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP70]], i16 [[TMP71]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i16, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i16 [[TMP73]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP74:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP74]] monotonic, align 2
// CHECK-NEXT:    [[TMP76:%.*]] = icmp ult i16 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i16 [[TMP74]], i16 [[TMP75]]
// CHECK-NEXT:    store i16 [[TMP77]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP78:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP78]] monotonic, align 2
// CHECK-NEXT:    [[TMP80:%.*]] = icmp ugt i16 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i16 [[TMP78]], i16 [[TMP79]]
// CHECK-NEXT:    store i16 [[TMP81]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP82:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP83:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP82]], i16 [[TMP83]] monotonic monotonic, align 2
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i16, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i16, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i16 [[TMP82]], i16 [[TMP85]]
// CHECK-NEXT:    store i16 [[TMP87]], ptr [[USV]], align 2
// CHECK-NEXT:    [[TMP88:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP88]] release, align 2
// CHECK-NEXT:    store i16 [[TMP89]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP90]] release, align 2
// CHECK-NEXT:    store i16 [[TMP91]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP93:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP92]], i16 [[TMP93]] release monotonic, align 2
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i16, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i16 [[TMP95]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP96]] release, align 2
// CHECK-NEXT:    [[TMP98:%.*]] = icmp ult i16 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i16 [[TMP96]], i16 [[TMP97]]
// CHECK-NEXT:    store i16 [[TMP99]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP100]] release, align 2
// CHECK-NEXT:    [[TMP102:%.*]] = icmp ugt i16 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i16 [[TMP100]], i16 [[TMP101]]
// CHECK-NEXT:    store i16 [[TMP103]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP105:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP104]], i16 [[TMP105]] release monotonic, align 2
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i16, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i16, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i16 [[TMP104]], i16 [[TMP107]]
// CHECK-NEXT:    store i16 [[TMP109]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP110]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP111]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP112]] seq_cst, align 2
// CHECK-NEXT:    store i16 [[TMP113]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP115:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP114]], i16 [[TMP115]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i16, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i16 [[TMP117]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP118]] seq_cst, align 2
// CHECK-NEXT:    [[TMP120:%.*]] = icmp ult i16 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i16 [[TMP118]], i16 [[TMP119]]
// CHECK-NEXT:    store i16 [[TMP121]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP122]] seq_cst, align 2
// CHECK-NEXT:    [[TMP124:%.*]] = icmp ugt i16 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i16 [[TMP122]], i16 [[TMP123]]
// CHECK-NEXT:    store i16 [[TMP125]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT:    [[TMP127:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP126]], i16 [[TMP127]] seq_cst seq_cst, align 2
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i16, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i16, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i16 [[TMP126]], i16 [[TMP129]]
// CHECK-NEXT:    store i16 [[TMP131]], ptr [[USV]], align 2
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i16, ptr [[USV]], align 2
// CHECK-NEXT:    ret i16 [[TMP132]]
//
//
// CHECK-LABEL: @ixevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[IX:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[IV:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[IE:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[ID:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP0]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP1]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP2]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP3]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP4:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP5:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP4]], i32 [[TMP5]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i32, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i32 [[TMP7]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP8:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP8]] monotonic, align 4
// CHECK-NEXT:    [[TMP10:%.*]] = icmp slt i32 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i32 [[TMP8]], i32 [[TMP9]]
// CHECK-NEXT:    store i32 [[TMP11]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP12:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP12]] monotonic, align 4
// CHECK-NEXT:    [[TMP14:%.*]] = icmp sgt i32 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i32 [[TMP12]], i32 [[TMP13]]
// CHECK-NEXT:    store i32 [[TMP15]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP16:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP17:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP16]], i32 [[TMP17]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i32, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i32, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i32 [[TMP16]], i32 [[TMP19]]
// CHECK-NEXT:    store i32 [[TMP21]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP22:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP22]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP23]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP24]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP25]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP27:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP26]], i32 [[TMP27]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i32, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i32 [[TMP29]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP30]] acq_rel, align 4
// CHECK-NEXT:    [[TMP32:%.*]] = icmp slt i32 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i32 [[TMP30]], i32 [[TMP31]]
// CHECK-NEXT:    store i32 [[TMP33]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP34]] acq_rel, align 4
// CHECK-NEXT:    [[TMP36:%.*]] = icmp sgt i32 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i32 [[TMP34]], i32 [[TMP35]]
// CHECK-NEXT:    store i32 [[TMP37]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP39:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP38]], i32 [[TMP39]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i32, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i32, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i32 [[TMP38]], i32 [[TMP41]]
// CHECK-NEXT:    store i32 [[TMP43]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP44]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP45]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP46:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP46]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP47]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP48:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP49:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP48]], i32 [[TMP49]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i32, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i32 [[TMP51]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP52:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP52]] acquire, align 4
// CHECK-NEXT:    [[TMP54:%.*]] = icmp slt i32 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i32 [[TMP52]], i32 [[TMP53]]
// CHECK-NEXT:    store i32 [[TMP55]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP56:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP56]] acquire, align 4
// CHECK-NEXT:    [[TMP58:%.*]] = icmp sgt i32 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i32 [[TMP56]], i32 [[TMP57]]
// CHECK-NEXT:    store i32 [[TMP59]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP60:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP61:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP60]], i32 [[TMP61]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i32, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i32, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i32 [[TMP60]], i32 [[TMP63]]
// CHECK-NEXT:    store i32 [[TMP65]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP66:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP66]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP67]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP68:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP68]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP69]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP70:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP71:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP70]], i32 [[TMP71]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i32, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i32 [[TMP73]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP74:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP74]] monotonic, align 4
// CHECK-NEXT:    [[TMP76:%.*]] = icmp slt i32 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i32 [[TMP74]], i32 [[TMP75]]
// CHECK-NEXT:    store i32 [[TMP77]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP78:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP78]] monotonic, align 4
// CHECK-NEXT:    [[TMP80:%.*]] = icmp sgt i32 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i32 [[TMP78]], i32 [[TMP79]]
// CHECK-NEXT:    store i32 [[TMP81]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP82:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP83:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP82]], i32 [[TMP83]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i32, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i32, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i32 [[TMP82]], i32 [[TMP85]]
// CHECK-NEXT:    store i32 [[TMP87]], ptr [[IV]], align 4
// CHECK-NEXT:    [[TMP88:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP88]] release, align 4
// CHECK-NEXT:    store i32 [[TMP89]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP90]] release, align 4
// CHECK-NEXT:    store i32 [[TMP91]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP93:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP92]], i32 [[TMP93]] release monotonic, align 4
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i32, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i32 [[TMP95]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP96]] release, align 4
// CHECK-NEXT:    [[TMP98:%.*]] = icmp slt i32 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i32 [[TMP96]], i32 [[TMP97]]
// CHECK-NEXT:    store i32 [[TMP99]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP100]] release, align 4
// CHECK-NEXT:    [[TMP102:%.*]] = icmp sgt i32 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i32 [[TMP100]], i32 [[TMP101]]
// CHECK-NEXT:    store i32 [[TMP103]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP105:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP104]], i32 [[TMP105]] release monotonic, align 4
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i32, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i32, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i32 [[TMP104]], i32 [[TMP107]]
// CHECK-NEXT:    store i32 [[TMP109]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP110]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP111]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP112]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP113]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP115:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP114]], i32 [[TMP115]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i32, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i32 [[TMP117]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP118]] seq_cst, align 4
// CHECK-NEXT:    [[TMP120:%.*]] = icmp slt i32 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i32 [[TMP118]], i32 [[TMP119]]
// CHECK-NEXT:    store i32 [[TMP121]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP122]] seq_cst, align 4
// CHECK-NEXT:    [[TMP124:%.*]] = icmp sgt i32 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i32 [[TMP122]], i32 [[TMP123]]
// CHECK-NEXT:    store i32 [[TMP125]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT:    [[TMP127:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP126]], i32 [[TMP127]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i32, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i32, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i32 [[TMP126]], i32 [[TMP129]]
// CHECK-NEXT:    store i32 [[TMP131]], ptr [[IV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i32, ptr [[IV]], align 4
// CHECK-NEXT:    ret i32 [[TMP132]]
//
//
// CHECK-LABEL: @uixevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[UIX:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIV:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UIE:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[UID:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP0]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP1]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP2]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP3]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP4:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP5:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP4]], i32 [[TMP5]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i32, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i32 [[TMP7]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP8:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP8]] monotonic, align 4
// CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i32 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i32 [[TMP8]], i32 [[TMP9]]
// CHECK-NEXT:    store i32 [[TMP11]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP12:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP12]] monotonic, align 4
// CHECK-NEXT:    [[TMP14:%.*]] = icmp ugt i32 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i32 [[TMP12]], i32 [[TMP13]]
// CHECK-NEXT:    store i32 [[TMP15]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP16:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP17:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP16]], i32 [[TMP17]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i32, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i32, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i32 [[TMP16]], i32 [[TMP19]]
// CHECK-NEXT:    store i32 [[TMP21]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP22:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP22]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP23]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP24]] acq_rel, align 4
// CHECK-NEXT:    store i32 [[TMP25]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP27:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP26]], i32 [[TMP27]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i32, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i32 [[TMP29]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP30]] acq_rel, align 4
// CHECK-NEXT:    [[TMP32:%.*]] = icmp ult i32 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i32 [[TMP30]], i32 [[TMP31]]
// CHECK-NEXT:    store i32 [[TMP33]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP34]] acq_rel, align 4
// CHECK-NEXT:    [[TMP36:%.*]] = icmp ugt i32 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i32 [[TMP34]], i32 [[TMP35]]
// CHECK-NEXT:    store i32 [[TMP37]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP39:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP38]], i32 [[TMP39]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i32, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i32, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i32 [[TMP38]], i32 [[TMP41]]
// CHECK-NEXT:    store i32 [[TMP43]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP44]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP45]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP46:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP46]] acquire, align 4
// CHECK-NEXT:    store i32 [[TMP47]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP48:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP49:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP48]], i32 [[TMP49]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i32, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i32 [[TMP51]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP52:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP52]] acquire, align 4
// CHECK-NEXT:    [[TMP54:%.*]] = icmp ult i32 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i32 [[TMP52]], i32 [[TMP53]]
// CHECK-NEXT:    store i32 [[TMP55]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP56:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP56]] acquire, align 4
// CHECK-NEXT:    [[TMP58:%.*]] = icmp ugt i32 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i32 [[TMP56]], i32 [[TMP57]]
// CHECK-NEXT:    store i32 [[TMP59]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP60:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP61:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP60]], i32 [[TMP61]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i32, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i32, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i32 [[TMP60]], i32 [[TMP63]]
// CHECK-NEXT:    store i32 [[TMP65]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP66:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP66]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP67]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP68:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP68]] monotonic, align 4
// CHECK-NEXT:    store i32 [[TMP69]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP70:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP71:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP70]], i32 [[TMP71]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i32, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i32 [[TMP73]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP74:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP74]] monotonic, align 4
// CHECK-NEXT:    [[TMP76:%.*]] = icmp ult i32 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i32 [[TMP74]], i32 [[TMP75]]
// CHECK-NEXT:    store i32 [[TMP77]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP78:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP78]] monotonic, align 4
// CHECK-NEXT:    [[TMP80:%.*]] = icmp ugt i32 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i32 [[TMP78]], i32 [[TMP79]]
// CHECK-NEXT:    store i32 [[TMP81]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP82:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP83:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP82]], i32 [[TMP83]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i32, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i32, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i32 [[TMP82]], i32 [[TMP85]]
// CHECK-NEXT:    store i32 [[TMP87]], ptr [[UIV]], align 4
// CHECK-NEXT:    [[TMP88:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP88]] release, align 4
// CHECK-NEXT:    store i32 [[TMP89]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP90]] release, align 4
// CHECK-NEXT:    store i32 [[TMP91]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP93:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP92]], i32 [[TMP93]] release monotonic, align 4
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i32, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i32 [[TMP95]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP96]] release, align 4
// CHECK-NEXT:    [[TMP98:%.*]] = icmp ult i32 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i32 [[TMP96]], i32 [[TMP97]]
// CHECK-NEXT:    store i32 [[TMP99]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP100]] release, align 4
// CHECK-NEXT:    [[TMP102:%.*]] = icmp ugt i32 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i32 [[TMP100]], i32 [[TMP101]]
// CHECK-NEXT:    store i32 [[TMP103]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP105:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP104]], i32 [[TMP105]] release monotonic, align 4
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i32, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i32, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i32 [[TMP104]], i32 [[TMP107]]
// CHECK-NEXT:    store i32 [[TMP109]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP110]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP111]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP112]] seq_cst, align 4
// CHECK-NEXT:    store i32 [[TMP113]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP115:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP114]], i32 [[TMP115]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i32, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i32 [[TMP117]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP118]] seq_cst, align 4
// CHECK-NEXT:    [[TMP120:%.*]] = icmp ult i32 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i32 [[TMP118]], i32 [[TMP119]]
// CHECK-NEXT:    store i32 [[TMP121]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP122]] seq_cst, align 4
// CHECK-NEXT:    [[TMP124:%.*]] = icmp ugt i32 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i32 [[TMP122]], i32 [[TMP123]]
// CHECK-NEXT:    store i32 [[TMP125]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT:    [[TMP127:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP126]], i32 [[TMP127]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i32, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i32, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i32 [[TMP126]], i32 [[TMP129]]
// CHECK-NEXT:    store i32 [[TMP131]], ptr [[UIV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i32, ptr [[UIV]], align 4
// CHECK-NEXT:    ret i32 [[TMP132]]
//
//
// CHECK-LABEL: @lxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[LX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP0]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP1]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP2:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP2]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP5:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP4]], i64 [[TMP5]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i64, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i64 [[TMP7]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP8:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP8]] monotonic, align 8
// CHECK-NEXT:    [[TMP10:%.*]] = icmp slt i64 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i64 [[TMP8]], i64 [[TMP9]]
// CHECK-NEXT:    store i64 [[TMP11]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP12:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP12]] monotonic, align 8
// CHECK-NEXT:    [[TMP14:%.*]] = icmp sgt i64 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i64 [[TMP12]], i64 [[TMP13]]
// CHECK-NEXT:    store i64 [[TMP15]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP16:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP17:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP16]], i64 [[TMP17]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i64, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i64, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i64 [[TMP16]], i64 [[TMP19]]
// CHECK-NEXT:    store i64 [[TMP21]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP22:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP22]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP23]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP24]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP25]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP27:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP26]], i64 [[TMP27]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i64, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i64 [[TMP29]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP30]] acq_rel, align 8
// CHECK-NEXT:    [[TMP32:%.*]] = icmp slt i64 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i64 [[TMP30]], i64 [[TMP31]]
// CHECK-NEXT:    store i64 [[TMP33]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP34]] acq_rel, align 8
// CHECK-NEXT:    [[TMP36:%.*]] = icmp sgt i64 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i64 [[TMP34]], i64 [[TMP35]]
// CHECK-NEXT:    store i64 [[TMP37]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP39:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP38]], i64 [[TMP39]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i64, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i64, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i64 [[TMP38]], i64 [[TMP41]]
// CHECK-NEXT:    store i64 [[TMP43]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP44]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP45]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP46:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP46]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP47]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP48:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP49:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP48]], i64 [[TMP49]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i64, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i64 [[TMP51]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP52:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP52]] acquire, align 8
// CHECK-NEXT:    [[TMP54:%.*]] = icmp slt i64 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i64 [[TMP52]], i64 [[TMP53]]
// CHECK-NEXT:    store i64 [[TMP55]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP56:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP56]] acquire, align 8
// CHECK-NEXT:    [[TMP58:%.*]] = icmp sgt i64 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i64 [[TMP56]], i64 [[TMP57]]
// CHECK-NEXT:    store i64 [[TMP59]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP60:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP61:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP60]], i64 [[TMP61]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i64, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i64, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i64 [[TMP60]], i64 [[TMP63]]
// CHECK-NEXT:    store i64 [[TMP65]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP66:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP66]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP67]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP68:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP68]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP69]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP70:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP71:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP70]], i64 [[TMP71]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i64, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i64 [[TMP73]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP74:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP74]] monotonic, align 8
// CHECK-NEXT:    [[TMP76:%.*]] = icmp slt i64 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i64 [[TMP74]], i64 [[TMP75]]
// CHECK-NEXT:    store i64 [[TMP77]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP78:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP78]] monotonic, align 8
// CHECK-NEXT:    [[TMP80:%.*]] = icmp sgt i64 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i64 [[TMP78]], i64 [[TMP79]]
// CHECK-NEXT:    store i64 [[TMP81]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP82:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP83:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP82]], i64 [[TMP83]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i64, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i64, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i64 [[TMP82]], i64 [[TMP85]]
// CHECK-NEXT:    store i64 [[TMP87]], ptr [[LV]], align 8
// CHECK-NEXT:    [[TMP88:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP88]] release, align 8
// CHECK-NEXT:    store i64 [[TMP89]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP90]] release, align 8
// CHECK-NEXT:    store i64 [[TMP91]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP93:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP92]], i64 [[TMP93]] release monotonic, align 8
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i64, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i64 [[TMP95]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP96]] release, align 8
// CHECK-NEXT:    [[TMP98:%.*]] = icmp slt i64 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i64 [[TMP96]], i64 [[TMP97]]
// CHECK-NEXT:    store i64 [[TMP99]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP100]] release, align 8
// CHECK-NEXT:    [[TMP102:%.*]] = icmp sgt i64 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i64 [[TMP100]], i64 [[TMP101]]
// CHECK-NEXT:    store i64 [[TMP103]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP105:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP104]], i64 [[TMP105]] release monotonic, align 8
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i64, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i64, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i64 [[TMP104]], i64 [[TMP107]]
// CHECK-NEXT:    store i64 [[TMP109]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP110]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP111]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP112]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP113]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP115:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP114]], i64 [[TMP115]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i64, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i64 [[TMP117]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP118]] seq_cst, align 8
// CHECK-NEXT:    [[TMP120:%.*]] = icmp slt i64 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i64 [[TMP118]], i64 [[TMP119]]
// CHECK-NEXT:    store i64 [[TMP121]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP122]] seq_cst, align 8
// CHECK-NEXT:    [[TMP124:%.*]] = icmp sgt i64 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i64 [[TMP122]], i64 [[TMP123]]
// CHECK-NEXT:    store i64 [[TMP125]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT:    [[TMP127:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP126]], i64 [[TMP127]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i64, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i64, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i64 [[TMP126]], i64 [[TMP129]]
// CHECK-NEXT:    store i64 [[TMP131]], ptr [[LV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i64, ptr [[LV]], align 8
// CHECK-NEXT:    ret i64 [[TMP132]]
//
//
// CHECK-LABEL: @ulxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[ULX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP0]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP1]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP2:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP2]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP5:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP4]], i64 [[TMP5]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i64, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i64 [[TMP7]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP8:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP8]] monotonic, align 8
// CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i64 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i64 [[TMP8]], i64 [[TMP9]]
// CHECK-NEXT:    store i64 [[TMP11]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP12:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP12]] monotonic, align 8
// CHECK-NEXT:    [[TMP14:%.*]] = icmp ugt i64 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i64 [[TMP12]], i64 [[TMP13]]
// CHECK-NEXT:    store i64 [[TMP15]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP16:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP17:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP16]], i64 [[TMP17]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i64, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i64, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i64 [[TMP16]], i64 [[TMP19]]
// CHECK-NEXT:    store i64 [[TMP21]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP22:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP22]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP23]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP24]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP25]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP27:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP26]], i64 [[TMP27]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i64, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i64 [[TMP29]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP30]] acq_rel, align 8
// CHECK-NEXT:    [[TMP32:%.*]] = icmp ult i64 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i64 [[TMP30]], i64 [[TMP31]]
// CHECK-NEXT:    store i64 [[TMP33]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP34]] acq_rel, align 8
// CHECK-NEXT:    [[TMP36:%.*]] = icmp ugt i64 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i64 [[TMP34]], i64 [[TMP35]]
// CHECK-NEXT:    store i64 [[TMP37]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP39:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP38]], i64 [[TMP39]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i64, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i64, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i64 [[TMP38]], i64 [[TMP41]]
// CHECK-NEXT:    store i64 [[TMP43]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP44]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP45]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP46:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP46]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP47]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP48:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP49:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP48]], i64 [[TMP49]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i64, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i64 [[TMP51]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP52:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP52]] acquire, align 8
// CHECK-NEXT:    [[TMP54:%.*]] = icmp ult i64 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i64 [[TMP52]], i64 [[TMP53]]
// CHECK-NEXT:    store i64 [[TMP55]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP56:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP56]] acquire, align 8
// CHECK-NEXT:    [[TMP58:%.*]] = icmp ugt i64 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i64 [[TMP56]], i64 [[TMP57]]
// CHECK-NEXT:    store i64 [[TMP59]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP60:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP61:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP60]], i64 [[TMP61]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i64, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i64, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i64 [[TMP60]], i64 [[TMP63]]
// CHECK-NEXT:    store i64 [[TMP65]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP66:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP66]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP67]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP68:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP68]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP69]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP70:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP71:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP70]], i64 [[TMP71]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i64, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i64 [[TMP73]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP74:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP74]] monotonic, align 8
// CHECK-NEXT:    [[TMP76:%.*]] = icmp ult i64 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i64 [[TMP74]], i64 [[TMP75]]
// CHECK-NEXT:    store i64 [[TMP77]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP78:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP78]] monotonic, align 8
// CHECK-NEXT:    [[TMP80:%.*]] = icmp ugt i64 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i64 [[TMP78]], i64 [[TMP79]]
// CHECK-NEXT:    store i64 [[TMP81]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP82:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP83:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP82]], i64 [[TMP83]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i64, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i64, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i64 [[TMP82]], i64 [[TMP85]]
// CHECK-NEXT:    store i64 [[TMP87]], ptr [[ULV]], align 8
// CHECK-NEXT:    [[TMP88:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP88]] release, align 8
// CHECK-NEXT:    store i64 [[TMP89]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP90]] release, align 8
// CHECK-NEXT:    store i64 [[TMP91]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP93:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP92]], i64 [[TMP93]] release monotonic, align 8
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i64, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i64 [[TMP95]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP96]] release, align 8
// CHECK-NEXT:    [[TMP98:%.*]] = icmp ult i64 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i64 [[TMP96]], i64 [[TMP97]]
// CHECK-NEXT:    store i64 [[TMP99]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP100]] release, align 8
// CHECK-NEXT:    [[TMP102:%.*]] = icmp ugt i64 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i64 [[TMP100]], i64 [[TMP101]]
// CHECK-NEXT:    store i64 [[TMP103]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP105:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP104]], i64 [[TMP105]] release monotonic, align 8
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i64, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i64, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i64 [[TMP104]], i64 [[TMP107]]
// CHECK-NEXT:    store i64 [[TMP109]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP110]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP111]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP112]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP113]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP115:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP114]], i64 [[TMP115]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i64, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i64 [[TMP117]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP118]] seq_cst, align 8
// CHECK-NEXT:    [[TMP120:%.*]] = icmp ult i64 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i64 [[TMP118]], i64 [[TMP119]]
// CHECK-NEXT:    store i64 [[TMP121]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP122]] seq_cst, align 8
// CHECK-NEXT:    [[TMP124:%.*]] = icmp ugt i64 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i64 [[TMP122]], i64 [[TMP123]]
// CHECK-NEXT:    store i64 [[TMP125]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT:    [[TMP127:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP126]], i64 [[TMP127]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i64, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i64, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i64 [[TMP126]], i64 [[TMP129]]
// CHECK-NEXT:    store i64 [[TMP131]], ptr [[ULV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i64, ptr [[ULV]], align 8
// CHECK-NEXT:    ret i64 [[TMP132]]
//
//
// CHECK-LABEL: @llxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[LLX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[LLD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP0]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP1]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP2:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP2]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP5:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP4]], i64 [[TMP5]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i64, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i64 [[TMP7]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP8:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP8]] monotonic, align 8
// CHECK-NEXT:    [[TMP10:%.*]] = icmp slt i64 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i64 [[TMP8]], i64 [[TMP9]]
// CHECK-NEXT:    store i64 [[TMP11]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP12:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP12]] monotonic, align 8
// CHECK-NEXT:    [[TMP14:%.*]] = icmp sgt i64 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i64 [[TMP12]], i64 [[TMP13]]
// CHECK-NEXT:    store i64 [[TMP15]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP16:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP17:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP16]], i64 [[TMP17]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i64, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i64, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i64 [[TMP16]], i64 [[TMP19]]
// CHECK-NEXT:    store i64 [[TMP21]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP22:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP22]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP23]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP24]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP25]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP27:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP26]], i64 [[TMP27]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i64, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i64 [[TMP29]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP30]] acq_rel, align 8
// CHECK-NEXT:    [[TMP32:%.*]] = icmp slt i64 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i64 [[TMP30]], i64 [[TMP31]]
// CHECK-NEXT:    store i64 [[TMP33]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP34]] acq_rel, align 8
// CHECK-NEXT:    [[TMP36:%.*]] = icmp sgt i64 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i64 [[TMP34]], i64 [[TMP35]]
// CHECK-NEXT:    store i64 [[TMP37]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP39:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP38]], i64 [[TMP39]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i64, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i64, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i64 [[TMP38]], i64 [[TMP41]]
// CHECK-NEXT:    store i64 [[TMP43]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP44]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP45]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP46:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP46]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP47]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP48:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP49:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP48]], i64 [[TMP49]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i64, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i64 [[TMP51]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP52:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP52]] acquire, align 8
// CHECK-NEXT:    [[TMP54:%.*]] = icmp slt i64 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i64 [[TMP52]], i64 [[TMP53]]
// CHECK-NEXT:    store i64 [[TMP55]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP56:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP56]] acquire, align 8
// CHECK-NEXT:    [[TMP58:%.*]] = icmp sgt i64 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i64 [[TMP56]], i64 [[TMP57]]
// CHECK-NEXT:    store i64 [[TMP59]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP60:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP61:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP60]], i64 [[TMP61]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i64, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i64, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i64 [[TMP60]], i64 [[TMP63]]
// CHECK-NEXT:    store i64 [[TMP65]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP66:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP66]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP67]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP68:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP68]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP69]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP70:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP71:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP70]], i64 [[TMP71]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i64, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i64 [[TMP73]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP74:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP74]] monotonic, align 8
// CHECK-NEXT:    [[TMP76:%.*]] = icmp slt i64 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i64 [[TMP74]], i64 [[TMP75]]
// CHECK-NEXT:    store i64 [[TMP77]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP78:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP78]] monotonic, align 8
// CHECK-NEXT:    [[TMP80:%.*]] = icmp sgt i64 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i64 [[TMP78]], i64 [[TMP79]]
// CHECK-NEXT:    store i64 [[TMP81]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP82:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP83:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP82]], i64 [[TMP83]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i64, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i64, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i64 [[TMP82]], i64 [[TMP85]]
// CHECK-NEXT:    store i64 [[TMP87]], ptr [[LLV]], align 8
// CHECK-NEXT:    [[TMP88:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP88]] release, align 8
// CHECK-NEXT:    store i64 [[TMP89]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP90]] release, align 8
// CHECK-NEXT:    store i64 [[TMP91]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP93:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP92]], i64 [[TMP93]] release monotonic, align 8
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i64, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i64 [[TMP95]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP96]] release, align 8
// CHECK-NEXT:    [[TMP98:%.*]] = icmp slt i64 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i64 [[TMP96]], i64 [[TMP97]]
// CHECK-NEXT:    store i64 [[TMP99]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP100]] release, align 8
// CHECK-NEXT:    [[TMP102:%.*]] = icmp sgt i64 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i64 [[TMP100]], i64 [[TMP101]]
// CHECK-NEXT:    store i64 [[TMP103]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP105:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP104]], i64 [[TMP105]] release monotonic, align 8
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i64, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i64, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i64 [[TMP104]], i64 [[TMP107]]
// CHECK-NEXT:    store i64 [[TMP109]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP110]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP111]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP112]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP113]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP115:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP114]], i64 [[TMP115]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i64, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i64 [[TMP117]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP118]] seq_cst, align 8
// CHECK-NEXT:    [[TMP120:%.*]] = icmp slt i64 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i64 [[TMP118]], i64 [[TMP119]]
// CHECK-NEXT:    store i64 [[TMP121]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP122]] seq_cst, align 8
// CHECK-NEXT:    [[TMP124:%.*]] = icmp sgt i64 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i64 [[TMP122]], i64 [[TMP123]]
// CHECK-NEXT:    store i64 [[TMP125]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT:    [[TMP127:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP126]], i64 [[TMP127]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i64, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i64, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i64 [[TMP126]], i64 [[TMP129]]
// CHECK-NEXT:    store i64 [[TMP131]], ptr [[LLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i64, ptr [[LLV]], align 8
// CHECK-NEXT:    ret i64 [[TMP132]]
//
//
// CHECK-LABEL: @ullxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[ULLX:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[ULLD:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP0]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP1]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP2:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP2]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP3]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP4:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP5:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP6:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP4]], i64 [[TMP5]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP7:%.*]] = extractvalue { i64, i1 } [[TMP6]], 0
// CHECK-NEXT:    store i64 [[TMP7]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP8:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP9:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP8]] monotonic, align 8
// CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i64 [[TMP9]], [[TMP8]]
// CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP10]], i64 [[TMP8]], i64 [[TMP9]]
// CHECK-NEXT:    store i64 [[TMP11]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP12:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP13:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP12]] monotonic, align 8
// CHECK-NEXT:    [[TMP14:%.*]] = icmp ugt i64 [[TMP13]], [[TMP12]]
// CHECK-NEXT:    [[TMP15:%.*]] = select i1 [[TMP14]], i64 [[TMP12]], i64 [[TMP13]]
// CHECK-NEXT:    store i64 [[TMP15]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP16:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP17:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP18:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP16]], i64 [[TMP17]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP19:%.*]] = extractvalue { i64, i1 } [[TMP18]], 0
// CHECK-NEXT:    [[TMP20:%.*]] = extractvalue { i64, i1 } [[TMP18]], 1
// CHECK-NEXT:    [[TMP21:%.*]] = select i1 [[TMP20]], i64 [[TMP16]], i64 [[TMP19]]
// CHECK-NEXT:    store i64 [[TMP21]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP22:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP23:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP22]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP23]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP24:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP25:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP24]] acq_rel, align 8
// CHECK-NEXT:    store i64 [[TMP25]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP26:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP27:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP28:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP26]], i64 [[TMP27]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP29:%.*]] = extractvalue { i64, i1 } [[TMP28]], 0
// CHECK-NEXT:    store i64 [[TMP29]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP30]] acq_rel, align 8
// CHECK-NEXT:    [[TMP32:%.*]] = icmp ult i64 [[TMP31]], [[TMP30]]
// CHECK-NEXT:    [[TMP33:%.*]] = select i1 [[TMP32]], i64 [[TMP30]], i64 [[TMP31]]
// CHECK-NEXT:    store i64 [[TMP33]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP34:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP35:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP34]] acq_rel, align 8
// CHECK-NEXT:    [[TMP36:%.*]] = icmp ugt i64 [[TMP35]], [[TMP34]]
// CHECK-NEXT:    [[TMP37:%.*]] = select i1 [[TMP36]], i64 [[TMP34]], i64 [[TMP35]]
// CHECK-NEXT:    store i64 [[TMP37]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP38:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP39:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP40:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP38]], i64 [[TMP39]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP41:%.*]] = extractvalue { i64, i1 } [[TMP40]], 0
// CHECK-NEXT:    [[TMP42:%.*]] = extractvalue { i64, i1 } [[TMP40]], 1
// CHECK-NEXT:    [[TMP43:%.*]] = select i1 [[TMP42]], i64 [[TMP38]], i64 [[TMP41]]
// CHECK-NEXT:    store i64 [[TMP43]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP44:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP45:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP44]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP45]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP46:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP47:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP46]] acquire, align 8
// CHECK-NEXT:    store i64 [[TMP47]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP48:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP49:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP50:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP48]], i64 [[TMP49]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP51:%.*]] = extractvalue { i64, i1 } [[TMP50]], 0
// CHECK-NEXT:    store i64 [[TMP51]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP52:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP53:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP52]] acquire, align 8
// CHECK-NEXT:    [[TMP54:%.*]] = icmp ult i64 [[TMP53]], [[TMP52]]
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], i64 [[TMP52]], i64 [[TMP53]]
// CHECK-NEXT:    store i64 [[TMP55]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP56:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP56]] acquire, align 8
// CHECK-NEXT:    [[TMP58:%.*]] = icmp ugt i64 [[TMP57]], [[TMP56]]
// CHECK-NEXT:    [[TMP59:%.*]] = select i1 [[TMP58]], i64 [[TMP56]], i64 [[TMP57]]
// CHECK-NEXT:    store i64 [[TMP59]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP60:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP61:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP62:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP60]], i64 [[TMP61]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP63:%.*]] = extractvalue { i64, i1 } [[TMP62]], 0
// CHECK-NEXT:    [[TMP64:%.*]] = extractvalue { i64, i1 } [[TMP62]], 1
// CHECK-NEXT:    [[TMP65:%.*]] = select i1 [[TMP64]], i64 [[TMP60]], i64 [[TMP63]]
// CHECK-NEXT:    store i64 [[TMP65]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP66:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP67:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP66]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP67]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP68:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP69:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP68]] monotonic, align 8
// CHECK-NEXT:    store i64 [[TMP69]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP70:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP71:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP72:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP70]], i64 [[TMP71]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP73:%.*]] = extractvalue { i64, i1 } [[TMP72]], 0
// CHECK-NEXT:    store i64 [[TMP73]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP74:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP75:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP74]] monotonic, align 8
// CHECK-NEXT:    [[TMP76:%.*]] = icmp ult i64 [[TMP75]], [[TMP74]]
// CHECK-NEXT:    [[TMP77:%.*]] = select i1 [[TMP76]], i64 [[TMP74]], i64 [[TMP75]]
// CHECK-NEXT:    store i64 [[TMP77]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP78:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP79:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP78]] monotonic, align 8
// CHECK-NEXT:    [[TMP80:%.*]] = icmp ugt i64 [[TMP79]], [[TMP78]]
// CHECK-NEXT:    [[TMP81:%.*]] = select i1 [[TMP80]], i64 [[TMP78]], i64 [[TMP79]]
// CHECK-NEXT:    store i64 [[TMP81]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP82:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP83:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP84:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP82]], i64 [[TMP83]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP85:%.*]] = extractvalue { i64, i1 } [[TMP84]], 0
// CHECK-NEXT:    [[TMP86:%.*]] = extractvalue { i64, i1 } [[TMP84]], 1
// CHECK-NEXT:    [[TMP87:%.*]] = select i1 [[TMP86]], i64 [[TMP82]], i64 [[TMP85]]
// CHECK-NEXT:    store i64 [[TMP87]], ptr [[ULLV]], align 8
// CHECK-NEXT:    [[TMP88:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP89:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP88]] release, align 8
// CHECK-NEXT:    store i64 [[TMP89]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP90:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP91:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP90]] release, align 8
// CHECK-NEXT:    store i64 [[TMP91]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP92:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP93:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP94:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP92]], i64 [[TMP93]] release monotonic, align 8
// CHECK-NEXT:    [[TMP95:%.*]] = extractvalue { i64, i1 } [[TMP94]], 0
// CHECK-NEXT:    store i64 [[TMP95]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP96:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP97:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP96]] release, align 8
// CHECK-NEXT:    [[TMP98:%.*]] = icmp ult i64 [[TMP97]], [[TMP96]]
// CHECK-NEXT:    [[TMP99:%.*]] = select i1 [[TMP98]], i64 [[TMP96]], i64 [[TMP97]]
// CHECK-NEXT:    store i64 [[TMP99]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP100:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP101:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP100]] release, align 8
// CHECK-NEXT:    [[TMP102:%.*]] = icmp ugt i64 [[TMP101]], [[TMP100]]
// CHECK-NEXT:    [[TMP103:%.*]] = select i1 [[TMP102]], i64 [[TMP100]], i64 [[TMP101]]
// CHECK-NEXT:    store i64 [[TMP103]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP104:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP105:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP106:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP104]], i64 [[TMP105]] release monotonic, align 8
// CHECK-NEXT:    [[TMP107:%.*]] = extractvalue { i64, i1 } [[TMP106]], 0
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i64, i1 } [[TMP106]], 1
// CHECK-NEXT:    [[TMP109:%.*]] = select i1 [[TMP108]], i64 [[TMP104]], i64 [[TMP107]]
// CHECK-NEXT:    store i64 [[TMP109]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP110:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP111:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP110]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP111]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP112:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP112]] seq_cst, align 8
// CHECK-NEXT:    store i64 [[TMP113]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP115:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP116:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP114]], i64 [[TMP115]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP117:%.*]] = extractvalue { i64, i1 } [[TMP116]], 0
// CHECK-NEXT:    store i64 [[TMP117]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP118:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP119:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP118]] seq_cst, align 8
// CHECK-NEXT:    [[TMP120:%.*]] = icmp ult i64 [[TMP119]], [[TMP118]]
// CHECK-NEXT:    [[TMP121:%.*]] = select i1 [[TMP120]], i64 [[TMP118]], i64 [[TMP119]]
// CHECK-NEXT:    store i64 [[TMP121]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP122:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP123:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP122]] seq_cst, align 8
// CHECK-NEXT:    [[TMP124:%.*]] = icmp ugt i64 [[TMP123]], [[TMP122]]
// CHECK-NEXT:    [[TMP125:%.*]] = select i1 [[TMP124]], i64 [[TMP122]], i64 [[TMP123]]
// CHECK-NEXT:    store i64 [[TMP125]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP126:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT:    [[TMP127:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT:    [[TMP128:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP126]], i64 [[TMP127]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP129:%.*]] = extractvalue { i64, i1 } [[TMP128]], 0
// CHECK-NEXT:    [[TMP130:%.*]] = extractvalue { i64, i1 } [[TMP128]], 1
// CHECK-NEXT:    [[TMP131:%.*]] = select i1 [[TMP130]], i64 [[TMP126]], i64 [[TMP129]]
// CHECK-NEXT:    store i64 [[TMP131]], ptr [[ULLV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP132:%.*]] = load i64, ptr [[ULLV]], align 8
// CHECK-NEXT:    ret i64 [[TMP132]]
//
//
// CHECK-LABEL: @fxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[FX:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FV:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FE:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[FD:%.*]] = alloca float, align 4
// CHECK-NEXT:    [[TMP0:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP0]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP1]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP2:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP2]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP3]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP4:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP5:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP6:%.*]] = bitcast float [[TMP4]] to i32
// CHECK-NEXT:    [[TMP7:%.*]] = bitcast float [[TMP5]] to i32
// CHECK-NEXT:    [[TMP8:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP6]], i32 [[TMP7]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP9:%.*]] = extractvalue { i32, i1 } [[TMP8]], 0
// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i32 [[TMP9]] to float
// CHECK-NEXT:    store float [[TMP10]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP11:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP12:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP11]] monotonic, align 4
// CHECK-NEXT:    [[TMP13:%.*]] = fcmp olt float [[TMP12]], [[TMP11]]
// CHECK-NEXT:    [[TMP14:%.*]] = select i1 [[TMP13]], float [[TMP11]], float [[TMP12]]
// CHECK-NEXT:    store float [[TMP14]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP15:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP16:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP15]] monotonic, align 4
// CHECK-NEXT:    [[TMP17:%.*]] = fcmp ogt float [[TMP16]], [[TMP15]]
// CHECK-NEXT:    [[TMP18:%.*]] = select i1 [[TMP17]], float [[TMP15]], float [[TMP16]]
// CHECK-NEXT:    store float [[TMP18]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP19:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP20:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP21:%.*]] = bitcast float [[TMP19]] to i32
// CHECK-NEXT:    [[TMP22:%.*]] = bitcast float [[TMP20]] to i32
// CHECK-NEXT:    [[TMP23:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP21]], i32 [[TMP22]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP24:%.*]] = extractvalue { i32, i1 } [[TMP23]], 0
// CHECK-NEXT:    [[TMP25:%.*]] = bitcast i32 [[TMP24]] to float
// CHECK-NEXT:    [[TMP26:%.*]] = extractvalue { i32, i1 } [[TMP23]], 1
// CHECK-NEXT:    [[TMP27:%.*]] = select i1 [[TMP26]], float [[TMP19]], float [[TMP25]]
// CHECK-NEXT:    store float [[TMP27]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP28:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP29:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP28]] acq_rel, align 4
// CHECK-NEXT:    store float [[TMP29]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP30]] acq_rel, align 4
// CHECK-NEXT:    store float [[TMP31]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP32:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP33:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP34:%.*]] = bitcast float [[TMP32]] to i32
// CHECK-NEXT:    [[TMP35:%.*]] = bitcast float [[TMP33]] to i32
// CHECK-NEXT:    [[TMP36:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP34]], i32 [[TMP35]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP37:%.*]] = extractvalue { i32, i1 } [[TMP36]], 0
// CHECK-NEXT:    [[TMP38:%.*]] = bitcast i32 [[TMP37]] to float
// CHECK-NEXT:    store float [[TMP38]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP39:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP40:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP39]] acq_rel, align 4
// CHECK-NEXT:    [[TMP41:%.*]] = fcmp olt float [[TMP40]], [[TMP39]]
// CHECK-NEXT:    [[TMP42:%.*]] = select i1 [[TMP41]], float [[TMP39]], float [[TMP40]]
// CHECK-NEXT:    store float [[TMP42]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP43:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP44:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP43]] acq_rel, align 4
// CHECK-NEXT:    [[TMP45:%.*]] = fcmp ogt float [[TMP44]], [[TMP43]]
// CHECK-NEXT:    [[TMP46:%.*]] = select i1 [[TMP45]], float [[TMP43]], float [[TMP44]]
// CHECK-NEXT:    store float [[TMP46]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP47:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP48:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP49:%.*]] = bitcast float [[TMP47]] to i32
// CHECK-NEXT:    [[TMP50:%.*]] = bitcast float [[TMP48]] to i32
// CHECK-NEXT:    [[TMP51:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP49]], i32 [[TMP50]] acq_rel acquire, align 4
// CHECK-NEXT:    [[TMP52:%.*]] = extractvalue { i32, i1 } [[TMP51]], 0
// CHECK-NEXT:    [[TMP53:%.*]] = bitcast i32 [[TMP52]] to float
// CHECK-NEXT:    [[TMP54:%.*]] = extractvalue { i32, i1 } [[TMP51]], 1
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], float [[TMP47]], float [[TMP53]]
// CHECK-NEXT:    store float [[TMP55]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP56:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP56]] acquire, align 4
// CHECK-NEXT:    store float [[TMP57]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP58:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP59:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP58]] acquire, align 4
// CHECK-NEXT:    store float [[TMP59]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP60:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP61:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP62:%.*]] = bitcast float [[TMP60]] to i32
// CHECK-NEXT:    [[TMP63:%.*]] = bitcast float [[TMP61]] to i32
// CHECK-NEXT:    [[TMP64:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP62]], i32 [[TMP63]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP65:%.*]] = extractvalue { i32, i1 } [[TMP64]], 0
// CHECK-NEXT:    [[TMP66:%.*]] = bitcast i32 [[TMP65]] to float
// CHECK-NEXT:    store float [[TMP66]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP67:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP68:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP67]] acquire, align 4
// CHECK-NEXT:    [[TMP69:%.*]] = fcmp olt float [[TMP68]], [[TMP67]]
// CHECK-NEXT:    [[TMP70:%.*]] = select i1 [[TMP69]], float [[TMP67]], float [[TMP68]]
// CHECK-NEXT:    store float [[TMP70]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP71:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP72:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP71]] acquire, align 4
// CHECK-NEXT:    [[TMP73:%.*]] = fcmp ogt float [[TMP72]], [[TMP71]]
// CHECK-NEXT:    [[TMP74:%.*]] = select i1 [[TMP73]], float [[TMP71]], float [[TMP72]]
// CHECK-NEXT:    store float [[TMP74]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP75:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP76:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP77:%.*]] = bitcast float [[TMP75]] to i32
// CHECK-NEXT:    [[TMP78:%.*]] = bitcast float [[TMP76]] to i32
// CHECK-NEXT:    [[TMP79:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP77]], i32 [[TMP78]] acquire acquire, align 4
// CHECK-NEXT:    [[TMP80:%.*]] = extractvalue { i32, i1 } [[TMP79]], 0
// CHECK-NEXT:    [[TMP81:%.*]] = bitcast i32 [[TMP80]] to float
// CHECK-NEXT:    [[TMP82:%.*]] = extractvalue { i32, i1 } [[TMP79]], 1
// CHECK-NEXT:    [[TMP83:%.*]] = select i1 [[TMP82]], float [[TMP75]], float [[TMP81]]
// CHECK-NEXT:    store float [[TMP83]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP84:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP85:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP84]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP85]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP86:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP87:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP86]] monotonic, align 4
// CHECK-NEXT:    store float [[TMP87]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP88:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP89:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP90:%.*]] = bitcast float [[TMP88]] to i32
// CHECK-NEXT:    [[TMP91:%.*]] = bitcast float [[TMP89]] to i32
// CHECK-NEXT:    [[TMP92:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP90]], i32 [[TMP91]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP93:%.*]] = extractvalue { i32, i1 } [[TMP92]], 0
// CHECK-NEXT:    [[TMP94:%.*]] = bitcast i32 [[TMP93]] to float
// CHECK-NEXT:    store float [[TMP94]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP95:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP96:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP95]] monotonic, align 4
// CHECK-NEXT:    [[TMP97:%.*]] = fcmp olt float [[TMP96]], [[TMP95]]
// CHECK-NEXT:    [[TMP98:%.*]] = select i1 [[TMP97]], float [[TMP95]], float [[TMP96]]
// CHECK-NEXT:    store float [[TMP98]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP99:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP100:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP99]] monotonic, align 4
// CHECK-NEXT:    [[TMP101:%.*]] = fcmp ogt float [[TMP100]], [[TMP99]]
// CHECK-NEXT:    [[TMP102:%.*]] = select i1 [[TMP101]], float [[TMP99]], float [[TMP100]]
// CHECK-NEXT:    store float [[TMP102]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP103:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP104:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP105:%.*]] = bitcast float [[TMP103]] to i32
// CHECK-NEXT:    [[TMP106:%.*]] = bitcast float [[TMP104]] to i32
// CHECK-NEXT:    [[TMP107:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP105]], i32 [[TMP106]] monotonic monotonic, align 4
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i32, i1 } [[TMP107]], 0
// CHECK-NEXT:    [[TMP109:%.*]] = bitcast i32 [[TMP108]] to float
// CHECK-NEXT:    [[TMP110:%.*]] = extractvalue { i32, i1 } [[TMP107]], 1
// CHECK-NEXT:    [[TMP111:%.*]] = select i1 [[TMP110]], float [[TMP103]], float [[TMP109]]
// CHECK-NEXT:    store float [[TMP111]], ptr [[FV]], align 4
// CHECK-NEXT:    [[TMP112:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP112]] release, align 4
// CHECK-NEXT:    store float [[TMP113]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP115:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP114]] release, align 4
// CHECK-NEXT:    store float [[TMP115]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP116:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP117:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP118:%.*]] = bitcast float [[TMP116]] to i32
// CHECK-NEXT:    [[TMP119:%.*]] = bitcast float [[TMP117]] to i32
// CHECK-NEXT:    [[TMP120:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP118]], i32 [[TMP119]] release monotonic, align 4
// CHECK-NEXT:    [[TMP121:%.*]] = extractvalue { i32, i1 } [[TMP120]], 0
// CHECK-NEXT:    [[TMP122:%.*]] = bitcast i32 [[TMP121]] to float
// CHECK-NEXT:    store float [[TMP122]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP123:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP124:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP123]] release, align 4
// CHECK-NEXT:    [[TMP125:%.*]] = fcmp olt float [[TMP124]], [[TMP123]]
// CHECK-NEXT:    [[TMP126:%.*]] = select i1 [[TMP125]], float [[TMP123]], float [[TMP124]]
// CHECK-NEXT:    store float [[TMP126]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP127:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP128:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP127]] release, align 4
// CHECK-NEXT:    [[TMP129:%.*]] = fcmp ogt float [[TMP128]], [[TMP127]]
// CHECK-NEXT:    [[TMP130:%.*]] = select i1 [[TMP129]], float [[TMP127]], float [[TMP128]]
// CHECK-NEXT:    store float [[TMP130]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP131:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP132:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP133:%.*]] = bitcast float [[TMP131]] to i32
// CHECK-NEXT:    [[TMP134:%.*]] = bitcast float [[TMP132]] to i32
// CHECK-NEXT:    [[TMP135:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP133]], i32 [[TMP134]] release monotonic, align 4
// CHECK-NEXT:    [[TMP136:%.*]] = extractvalue { i32, i1 } [[TMP135]], 0
// CHECK-NEXT:    [[TMP137:%.*]] = bitcast i32 [[TMP136]] to float
// CHECK-NEXT:    [[TMP138:%.*]] = extractvalue { i32, i1 } [[TMP135]], 1
// CHECK-NEXT:    [[TMP139:%.*]] = select i1 [[TMP138]], float [[TMP131]], float [[TMP137]]
// CHECK-NEXT:    store float [[TMP139]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP140:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP141:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP140]] seq_cst, align 4
// CHECK-NEXT:    store float [[TMP141]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP142:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP143:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP142]] seq_cst, align 4
// CHECK-NEXT:    store float [[TMP143]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP144:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP145:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP146:%.*]] = bitcast float [[TMP144]] to i32
// CHECK-NEXT:    [[TMP147:%.*]] = bitcast float [[TMP145]] to i32
// CHECK-NEXT:    [[TMP148:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP146]], i32 [[TMP147]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP149:%.*]] = extractvalue { i32, i1 } [[TMP148]], 0
// CHECK-NEXT:    [[TMP150:%.*]] = bitcast i32 [[TMP149]] to float
// CHECK-NEXT:    store float [[TMP150]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP151:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP152:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP151]] seq_cst, align 4
// CHECK-NEXT:    [[TMP153:%.*]] = fcmp olt float [[TMP152]], [[TMP151]]
// CHECK-NEXT:    [[TMP154:%.*]] = select i1 [[TMP153]], float [[TMP151]], float [[TMP152]]
// CHECK-NEXT:    store float [[TMP154]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP155:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP156:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP155]] seq_cst, align 4
// CHECK-NEXT:    [[TMP157:%.*]] = fcmp ogt float [[TMP156]], [[TMP155]]
// CHECK-NEXT:    [[TMP158:%.*]] = select i1 [[TMP157]], float [[TMP155]], float [[TMP156]]
// CHECK-NEXT:    store float [[TMP158]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP159:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT:    [[TMP160:%.*]] = load float, ptr [[FD]], align 4
// CHECK-NEXT:    [[TMP161:%.*]] = bitcast float [[TMP159]] to i32
// CHECK-NEXT:    [[TMP162:%.*]] = bitcast float [[TMP160]] to i32
// CHECK-NEXT:    [[TMP163:%.*]] = cmpxchg ptr [[FX]], i32 [[TMP161]], i32 [[TMP162]] seq_cst seq_cst, align 4
// CHECK-NEXT:    [[TMP164:%.*]] = extractvalue { i32, i1 } [[TMP163]], 0
// CHECK-NEXT:    [[TMP165:%.*]] = bitcast i32 [[TMP164]] to float
// CHECK-NEXT:    [[TMP166:%.*]] = extractvalue { i32, i1 } [[TMP163]], 1
// CHECK-NEXT:    [[TMP167:%.*]] = select i1 [[TMP166]], float [[TMP159]], float [[TMP165]]
// CHECK-NEXT:    store float [[TMP167]], ptr [[FV]], align 4
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP168:%.*]] = load float, ptr [[FV]], align 4
// CHECK-NEXT:    ret float [[TMP168]]
//
//
// CHECK-LABEL: @dxevd(
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[DX:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DV:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DE:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[DD:%.*]] = alloca double, align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP0]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP1]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP2:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP3:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP2]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP3]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP4:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP5:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP6:%.*]] = bitcast double [[TMP4]] to i64
// CHECK-NEXT:    [[TMP7:%.*]] = bitcast double [[TMP5]] to i64
// CHECK-NEXT:    [[TMP8:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP6]], i64 [[TMP7]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP9:%.*]] = extractvalue { i64, i1 } [[TMP8]], 0
// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i64 [[TMP9]] to double
// CHECK-NEXT:    store double [[TMP10]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP11:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP12:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP11]] monotonic, align 8
// CHECK-NEXT:    [[TMP13:%.*]] = fcmp olt double [[TMP12]], [[TMP11]]
// CHECK-NEXT:    [[TMP14:%.*]] = select i1 [[TMP13]], double [[TMP11]], double [[TMP12]]
// CHECK-NEXT:    store double [[TMP14]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP15:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP16:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP15]] monotonic, align 8
// CHECK-NEXT:    [[TMP17:%.*]] = fcmp ogt double [[TMP16]], [[TMP15]]
// CHECK-NEXT:    [[TMP18:%.*]] = select i1 [[TMP17]], double [[TMP15]], double [[TMP16]]
// CHECK-NEXT:    store double [[TMP18]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP19:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP20:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP21:%.*]] = bitcast double [[TMP19]] to i64
// CHECK-NEXT:    [[TMP22:%.*]] = bitcast double [[TMP20]] to i64
// CHECK-NEXT:    [[TMP23:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP21]], i64 [[TMP22]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP24:%.*]] = extractvalue { i64, i1 } [[TMP23]], 0
// CHECK-NEXT:    [[TMP25:%.*]] = bitcast i64 [[TMP24]] to double
// CHECK-NEXT:    [[TMP26:%.*]] = extractvalue { i64, i1 } [[TMP23]], 1
// CHECK-NEXT:    [[TMP27:%.*]] = select i1 [[TMP26]], double [[TMP19]], double [[TMP25]]
// CHECK-NEXT:    store double [[TMP27]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP28:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP29:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP28]] acq_rel, align 8
// CHECK-NEXT:    store double [[TMP29]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP30:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP31:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP30]] acq_rel, align 8
// CHECK-NEXT:    store double [[TMP31]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP32:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP33:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP34:%.*]] = bitcast double [[TMP32]] to i64
// CHECK-NEXT:    [[TMP35:%.*]] = bitcast double [[TMP33]] to i64
// CHECK-NEXT:    [[TMP36:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP34]], i64 [[TMP35]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP37:%.*]] = extractvalue { i64, i1 } [[TMP36]], 0
// CHECK-NEXT:    [[TMP38:%.*]] = bitcast i64 [[TMP37]] to double
// CHECK-NEXT:    store double [[TMP38]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP39:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP40:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP39]] acq_rel, align 8
// CHECK-NEXT:    [[TMP41:%.*]] = fcmp olt double [[TMP40]], [[TMP39]]
// CHECK-NEXT:    [[TMP42:%.*]] = select i1 [[TMP41]], double [[TMP39]], double [[TMP40]]
// CHECK-NEXT:    store double [[TMP42]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP43:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP44:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP43]] acq_rel, align 8
// CHECK-NEXT:    [[TMP45:%.*]] = fcmp ogt double [[TMP44]], [[TMP43]]
// CHECK-NEXT:    [[TMP46:%.*]] = select i1 [[TMP45]], double [[TMP43]], double [[TMP44]]
// CHECK-NEXT:    store double [[TMP46]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP47:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP48:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP49:%.*]] = bitcast double [[TMP47]] to i64
// CHECK-NEXT:    [[TMP50:%.*]] = bitcast double [[TMP48]] to i64
// CHECK-NEXT:    [[TMP51:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP49]], i64 [[TMP50]] acq_rel acquire, align 8
// CHECK-NEXT:    [[TMP52:%.*]] = extractvalue { i64, i1 } [[TMP51]], 0
// CHECK-NEXT:    [[TMP53:%.*]] = bitcast i64 [[TMP52]] to double
// CHECK-NEXT:    [[TMP54:%.*]] = extractvalue { i64, i1 } [[TMP51]], 1
// CHECK-NEXT:    [[TMP55:%.*]] = select i1 [[TMP54]], double [[TMP47]], double [[TMP53]]
// CHECK-NEXT:    store double [[TMP55]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP56:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP57:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP56]] acquire, align 8
// CHECK-NEXT:    store double [[TMP57]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP58:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP59:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP58]] acquire, align 8
// CHECK-NEXT:    store double [[TMP59]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP60:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP61:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP62:%.*]] = bitcast double [[TMP60]] to i64
// CHECK-NEXT:    [[TMP63:%.*]] = bitcast double [[TMP61]] to i64
// CHECK-NEXT:    [[TMP64:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP62]], i64 [[TMP63]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP65:%.*]] = extractvalue { i64, i1 } [[TMP64]], 0
// CHECK-NEXT:    [[TMP66:%.*]] = bitcast i64 [[TMP65]] to double
// CHECK-NEXT:    store double [[TMP66]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP67:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP68:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP67]] acquire, align 8
// CHECK-NEXT:    [[TMP69:%.*]] = fcmp olt double [[TMP68]], [[TMP67]]
// CHECK-NEXT:    [[TMP70:%.*]] = select i1 [[TMP69]], double [[TMP67]], double [[TMP68]]
// CHECK-NEXT:    store double [[TMP70]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP71:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP72:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP71]] acquire, align 8
// CHECK-NEXT:    [[TMP73:%.*]] = fcmp ogt double [[TMP72]], [[TMP71]]
// CHECK-NEXT:    [[TMP74:%.*]] = select i1 [[TMP73]], double [[TMP71]], double [[TMP72]]
// CHECK-NEXT:    store double [[TMP74]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP75:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP76:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP77:%.*]] = bitcast double [[TMP75]] to i64
// CHECK-NEXT:    [[TMP78:%.*]] = bitcast double [[TMP76]] to i64
// CHECK-NEXT:    [[TMP79:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP77]], i64 [[TMP78]] acquire acquire, align 8
// CHECK-NEXT:    [[TMP80:%.*]] = extractvalue { i64, i1 } [[TMP79]], 0
// CHECK-NEXT:    [[TMP81:%.*]] = bitcast i64 [[TMP80]] to double
// CHECK-NEXT:    [[TMP82:%.*]] = extractvalue { i64, i1 } [[TMP79]], 1
// CHECK-NEXT:    [[TMP83:%.*]] = select i1 [[TMP82]], double [[TMP75]], double [[TMP81]]
// CHECK-NEXT:    store double [[TMP83]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP84:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP85:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP84]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP85]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP86:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP87:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP86]] monotonic, align 8
// CHECK-NEXT:    store double [[TMP87]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP88:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP89:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP90:%.*]] = bitcast double [[TMP88]] to i64
// CHECK-NEXT:    [[TMP91:%.*]] = bitcast double [[TMP89]] to i64
// CHECK-NEXT:    [[TMP92:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP90]], i64 [[TMP91]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP93:%.*]] = extractvalue { i64, i1 } [[TMP92]], 0
// CHECK-NEXT:    [[TMP94:%.*]] = bitcast i64 [[TMP93]] to double
// CHECK-NEXT:    store double [[TMP94]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP95:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP96:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP95]] monotonic, align 8
// CHECK-NEXT:    [[TMP97:%.*]] = fcmp olt double [[TMP96]], [[TMP95]]
// CHECK-NEXT:    [[TMP98:%.*]] = select i1 [[TMP97]], double [[TMP95]], double [[TMP96]]
// CHECK-NEXT:    store double [[TMP98]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP99:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP100:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP99]] monotonic, align 8
// CHECK-NEXT:    [[TMP101:%.*]] = fcmp ogt double [[TMP100]], [[TMP99]]
// CHECK-NEXT:    [[TMP102:%.*]] = select i1 [[TMP101]], double [[TMP99]], double [[TMP100]]
// CHECK-NEXT:    store double [[TMP102]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP103:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP104:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP105:%.*]] = bitcast double [[TMP103]] to i64
// CHECK-NEXT:    [[TMP106:%.*]] = bitcast double [[TMP104]] to i64
// CHECK-NEXT:    [[TMP107:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP105]], i64 [[TMP106]] monotonic monotonic, align 8
// CHECK-NEXT:    [[TMP108:%.*]] = extractvalue { i64, i1 } [[TMP107]], 0
// CHECK-NEXT:    [[TMP109:%.*]] = bitcast i64 [[TMP108]] to double
// CHECK-NEXT:    [[TMP110:%.*]] = extractvalue { i64, i1 } [[TMP107]], 1
// CHECK-NEXT:    [[TMP111:%.*]] = select i1 [[TMP110]], double [[TMP103]], double [[TMP109]]
// CHECK-NEXT:    store double [[TMP111]], ptr [[DV]], align 8
// CHECK-NEXT:    [[TMP112:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP113:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP112]] release, align 8
// CHECK-NEXT:    store double [[TMP113]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP114:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP115:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP114]] release, align 8
// CHECK-NEXT:    store double [[TMP115]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP116:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP117:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP118:%.*]] = bitcast double [[TMP116]] to i64
// CHECK-NEXT:    [[TMP119:%.*]] = bitcast double [[TMP117]] to i64
// CHECK-NEXT:    [[TMP120:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP118]], i64 [[TMP119]] release monotonic, align 8
// CHECK-NEXT:    [[TMP121:%.*]] = extractvalue { i64, i1 } [[TMP120]], 0
// CHECK-NEXT:    [[TMP122:%.*]] = bitcast i64 [[TMP121]] to double
// CHECK-NEXT:    store double [[TMP122]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP123:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP124:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP123]] release, align 8
// CHECK-NEXT:    [[TMP125:%.*]] = fcmp olt double [[TMP124]], [[TMP123]]
// CHECK-NEXT:    [[TMP126:%.*]] = select i1 [[TMP125]], double [[TMP123]], double [[TMP124]]
// CHECK-NEXT:    store double [[TMP126]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP127:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP128:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP127]] release, align 8
// CHECK-NEXT:    [[TMP129:%.*]] = fcmp ogt double [[TMP128]], [[TMP127]]
// CHECK-NEXT:    [[TMP130:%.*]] = select i1 [[TMP129]], double [[TMP127]], double [[TMP128]]
// CHECK-NEXT:    store double [[TMP130]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP131:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP132:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP133:%.*]] = bitcast double [[TMP131]] to i64
// CHECK-NEXT:    [[TMP134:%.*]] = bitcast double [[TMP132]] to i64
// CHECK-NEXT:    [[TMP135:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP133]], i64 [[TMP134]] release monotonic, align 8
// CHECK-NEXT:    [[TMP136:%.*]] = extractvalue { i64, i1 } [[TMP135]], 0
// CHECK-NEXT:    [[TMP137:%.*]] = bitcast i64 [[TMP136]] to double
// CHECK-NEXT:    [[TMP138:%.*]] = extractvalue { i64, i1 } [[TMP135]], 1
// CHECK-NEXT:    [[TMP139:%.*]] = select i1 [[TMP138]], double [[TMP131]], double [[TMP137]]
// CHECK-NEXT:    store double [[TMP139]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP140:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP141:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP140]] seq_cst, align 8
// CHECK-NEXT:    store double [[TMP141]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP142:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP143:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP142]] seq_cst, align 8
// CHECK-NEXT:    store double [[TMP143]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP144:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP145:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP146:%.*]] = bitcast double [[TMP144]] to i64
// CHECK-NEXT:    [[TMP147:%.*]] = bitcast double [[TMP145]] to i64
// CHECK-NEXT:    [[TMP148:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP146]], i64 [[TMP147]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP149:%.*]] = extractvalue { i64, i1 } [[TMP148]], 0
// CHECK-NEXT:    [[TMP150:%.*]] = bitcast i64 [[TMP149]] to double
// CHECK-NEXT:    store double [[TMP150]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP151:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP152:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP151]] seq_cst, align 8
// CHECK-NEXT:    [[TMP153:%.*]] = fcmp olt double [[TMP152]], [[TMP151]]
// CHECK-NEXT:    [[TMP154:%.*]] = select i1 [[TMP153]], double [[TMP151]], double [[TMP152]]
// CHECK-NEXT:    store double [[TMP154]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP155:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP156:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP155]] seq_cst, align 8
// CHECK-NEXT:    [[TMP157:%.*]] = fcmp ogt double [[TMP156]], [[TMP155]]
// CHECK-NEXT:    [[TMP158:%.*]] = select i1 [[TMP157]], double [[TMP155]], double [[TMP156]]
// CHECK-NEXT:    store double [[TMP158]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP159:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT:    [[TMP160:%.*]] = load double, ptr [[DD]], align 8
// CHECK-NEXT:    [[TMP161:%.*]] = bitcast double [[TMP159]] to i64
// CHECK-NEXT:    [[TMP162:%.*]] = bitcast double [[TMP160]] to i64
// CHECK-NEXT:    [[TMP163:%.*]] = cmpxchg ptr [[DX]], i64 [[TMP161]], i64 [[TMP162]] seq_cst seq_cst, align 8
// CHECK-NEXT:    [[TMP164:%.*]] = extractvalue { i64, i1 } [[TMP163]], 0
// CHECK-NEXT:    [[TMP165:%.*]] = bitcast i64 [[TMP164]] to double
// CHECK-NEXT:    [[TMP166:%.*]] = extractvalue { i64, i1 } [[TMP163]], 1
// CHECK-NEXT:    [[TMP167:%.*]] = select i1 [[TMP166]], double [[TMP159]], double [[TMP165]]
// CHECK-NEXT:    store double [[TMP167]], ptr [[DV]], align 8
// CHECK-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT:    [[TMP168:%.*]] = load double, ptr [[DV]], align 8
// CHECK-NEXT:    ret double [[TMP168]]
//
//
// SIMD-ONLY0-LABEL: @foo(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[CX:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CE:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CD:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCX:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCE:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCD:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[SX:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SE:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SD:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USX:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USE:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USD:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[IX:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[IE:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[ID:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIX:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIE:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UID:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[LX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[FX:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FE:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FD:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[DX:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DE:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DD:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV:%.*]] = sext i8 [[TMP0]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1:%.*]] = sext i8 [[TMP1]] to i32
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV1]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV3:%.*]] = sext i8 [[TMP2]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV4:%.*]] = sext i8 [[TMP3]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[CONV3]], [[COND_TRUE]] ], [ [[CONV4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    [[CONV5:%.*]] = trunc i32 [[COND]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV5]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV6:%.*]] = sext i8 [[TMP4]] to i32
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV7:%.*]] = sext i8 [[TMP5]] to i32
// SIMD-ONLY0-NEXT:    [[CMP8:%.*]] = icmp slt i32 [[CONV6]], [[CONV7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP8]], label [[COND_TRUE10:%.*]], label [[COND_FALSE12:%.*]]
// SIMD-ONLY0:       cond.true10:
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV11:%.*]] = sext i8 [[TMP6]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false12:
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV13:%.*]] = sext i8 [[TMP7]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[CONV11]], [[COND_TRUE10]] ], [ [[CONV13]], [[COND_FALSE12]] ]
// SIMD-ONLY0-NEXT:    [[CONV16:%.*]] = trunc i32 [[COND15]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV16]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV17:%.*]] = sext i8 [[TMP8]] to i32
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV18:%.*]] = sext i8 [[TMP9]] to i32
// SIMD-ONLY0-NEXT:    [[CMP19:%.*]] = icmp sgt i32 [[CONV17]], [[CONV18]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP19]], label [[COND_TRUE21:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true21:
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV22:%.*]] = sext i8 [[TMP10]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV24:%.*]] = sext i8 [[TMP11]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25]]
// SIMD-ONLY0:       cond.end25:
// SIMD-ONLY0-NEXT:    [[COND26:%.*]] = phi i32 [ [[CONV22]], [[COND_TRUE21]] ], [ [[CONV24]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    [[CONV27:%.*]] = trunc i32 [[COND26]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV27]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV28:%.*]] = sext i8 [[TMP12]] to i32
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV29:%.*]] = sext i8 [[TMP13]] to i32
// SIMD-ONLY0-NEXT:    [[CMP30:%.*]] = icmp slt i32 [[CONV28]], [[CONV29]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP30]], label [[COND_TRUE32:%.*]], label [[COND_FALSE34:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV33:%.*]] = sext i8 [[TMP14]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36:%.*]]
// SIMD-ONLY0:       cond.false34:
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV35:%.*]] = sext i8 [[TMP15]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36]]
// SIMD-ONLY0:       cond.end36:
// SIMD-ONLY0-NEXT:    [[COND37:%.*]] = phi i32 [ [[CONV33]], [[COND_TRUE32]] ], [ [[CONV35]], [[COND_FALSE34]] ]
// SIMD-ONLY0-NEXT:    [[CONV38:%.*]] = trunc i32 [[COND37]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV38]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV39:%.*]] = sext i8 [[TMP16]] to i32
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV40:%.*]] = sext i8 [[TMP17]] to i32
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp sgt i32 [[CONV39]], [[CONV40]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
// SIMD-ONLY0:       if.then:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP18]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END]]
// SIMD-ONLY0:       if.end:
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV43:%.*]] = sext i8 [[TMP19]] to i32
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV44:%.*]] = sext i8 [[TMP20]] to i32
// SIMD-ONLY0-NEXT:    [[CMP45:%.*]] = icmp slt i32 [[CONV43]], [[CONV44]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP45]], label [[IF_THEN47:%.*]], label [[IF_END48:%.*]]
// SIMD-ONLY0:       if.then47:
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP21]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END48]]
// SIMD-ONLY0:       if.end48:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV49:%.*]] = sext i8 [[TMP22]] to i32
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV50:%.*]] = sext i8 [[TMP23]] to i32
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp sgt i32 [[CONV49]], [[CONV50]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[IF_THEN53:%.*]], label [[IF_END54:%.*]]
// SIMD-ONLY0:       if.then53:
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP24]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END54]]
// SIMD-ONLY0:       if.end54:
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV55:%.*]] = sext i8 [[TMP25]] to i32
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV56:%.*]] = sext i8 [[TMP26]] to i32
// SIMD-ONLY0-NEXT:    [[CMP57:%.*]] = icmp slt i32 [[CONV55]], [[CONV56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP57]], label [[IF_THEN59:%.*]], label [[IF_END60:%.*]]
// SIMD-ONLY0:       if.then59:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP27]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END60]]
// SIMD-ONLY0:       if.end60:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV61:%.*]] = sext i8 [[TMP28]] to i32
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV62:%.*]] = sext i8 [[TMP29]] to i32
// SIMD-ONLY0-NEXT:    [[CMP63:%.*]] = icmp eq i32 [[CONV61]], [[CONV62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP63]], label [[COND_TRUE65:%.*]], label [[COND_FALSE67:%.*]]
// SIMD-ONLY0:       cond.true65:
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV66:%.*]] = sext i8 [[TMP30]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false67:
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV68:%.*]] = sext i8 [[TMP31]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[CONV66]], [[COND_TRUE65]] ], [ [[CONV68]], [[COND_FALSE67]] ]
// SIMD-ONLY0-NEXT:    [[CONV71:%.*]] = trunc i32 [[COND70]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV71]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV72:%.*]] = sext i8 [[TMP32]] to i32
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV73:%.*]] = sext i8 [[TMP33]] to i32
// SIMD-ONLY0-NEXT:    [[CMP74:%.*]] = icmp eq i32 [[CONV72]], [[CONV73]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP74]], label [[COND_TRUE76:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true76:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV77:%.*]] = sext i8 [[TMP34]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV79:%.*]] = sext i8 [[TMP35]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80]]
// SIMD-ONLY0:       cond.end80:
// SIMD-ONLY0-NEXT:    [[COND81:%.*]] = phi i32 [ [[CONV77]], [[COND_TRUE76]] ], [ [[CONV79]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    [[CONV82:%.*]] = trunc i32 [[COND81]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV82]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV83:%.*]] = sext i8 [[TMP36]] to i32
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV84:%.*]] = sext i8 [[TMP37]] to i32
// SIMD-ONLY0-NEXT:    [[CMP85:%.*]] = icmp eq i32 [[CONV83]], [[CONV84]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP85]], label [[IF_THEN87:%.*]], label [[IF_END88:%.*]]
// SIMD-ONLY0:       if.then87:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP38]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END88]]
// SIMD-ONLY0:       if.end88:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV89:%.*]] = sext i8 [[TMP39]] to i32
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV90:%.*]] = sext i8 [[TMP40]] to i32
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp eq i32 [[CONV89]], [[CONV90]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[IF_THEN93:%.*]], label [[IF_END94:%.*]]
// SIMD-ONLY0:       if.then93:
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP41]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END94]]
// SIMD-ONLY0:       if.end94:
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV95:%.*]] = zext i8 [[TMP42]] to i32
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV96:%.*]] = zext i8 [[TMP43]] to i32
// SIMD-ONLY0-NEXT:    [[CMP97:%.*]] = icmp sgt i32 [[CONV95]], [[CONV96]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP97]], label [[COND_TRUE99:%.*]], label [[COND_FALSE101:%.*]]
// SIMD-ONLY0:       cond.true99:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV100:%.*]] = zext i8 [[TMP44]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END103:%.*]]
// SIMD-ONLY0:       cond.false101:
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV102:%.*]] = zext i8 [[TMP45]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END103]]
// SIMD-ONLY0:       cond.end103:
// SIMD-ONLY0-NEXT:    [[COND104:%.*]] = phi i32 [ [[CONV100]], [[COND_TRUE99]] ], [ [[CONV102]], [[COND_FALSE101]] ]
// SIMD-ONLY0-NEXT:    [[CONV105:%.*]] = trunc i32 [[COND104]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV105]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV106:%.*]] = zext i8 [[TMP46]] to i32
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV107:%.*]] = zext i8 [[TMP47]] to i32
// SIMD-ONLY0-NEXT:    [[CMP108:%.*]] = icmp slt i32 [[CONV106]], [[CONV107]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP108]], label [[COND_TRUE110:%.*]], label [[COND_FALSE112:%.*]]
// SIMD-ONLY0:       cond.true110:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV111:%.*]] = zext i8 [[TMP48]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false112:
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV113:%.*]] = zext i8 [[TMP49]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i32 [ [[CONV111]], [[COND_TRUE110]] ], [ [[CONV113]], [[COND_FALSE112]] ]
// SIMD-ONLY0-NEXT:    [[CONV116:%.*]] = trunc i32 [[COND115]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV116]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV117:%.*]] = zext i8 [[TMP50]] to i32
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV118:%.*]] = zext i8 [[TMP51]] to i32
// SIMD-ONLY0-NEXT:    [[CMP119:%.*]] = icmp sgt i32 [[CONV117]], [[CONV118]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP119]], label [[COND_TRUE121:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true121:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV122:%.*]] = zext i8 [[TMP52]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END125:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV124:%.*]] = zext i8 [[TMP53]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END125]]
// SIMD-ONLY0:       cond.end125:
// SIMD-ONLY0-NEXT:    [[COND126:%.*]] = phi i32 [ [[CONV122]], [[COND_TRUE121]] ], [ [[CONV124]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    [[CONV127:%.*]] = trunc i32 [[COND126]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV127]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV128:%.*]] = zext i8 [[TMP54]] to i32
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV129:%.*]] = zext i8 [[TMP55]] to i32
// SIMD-ONLY0-NEXT:    [[CMP130:%.*]] = icmp slt i32 [[CONV128]], [[CONV129]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP130]], label [[COND_TRUE132:%.*]], label [[COND_FALSE134:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV133:%.*]] = zext i8 [[TMP56]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END136:%.*]]
// SIMD-ONLY0:       cond.false134:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV135:%.*]] = zext i8 [[TMP57]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END136]]
// SIMD-ONLY0:       cond.end136:
// SIMD-ONLY0-NEXT:    [[COND137:%.*]] = phi i32 [ [[CONV133]], [[COND_TRUE132]] ], [ [[CONV135]], [[COND_FALSE134]] ]
// SIMD-ONLY0-NEXT:    [[CONV138:%.*]] = trunc i32 [[COND137]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV138]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV139:%.*]] = zext i8 [[TMP58]] to i32
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV140:%.*]] = zext i8 [[TMP59]] to i32
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp sgt i32 [[CONV139]], [[CONV140]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[IF_THEN143:%.*]], label [[IF_END144:%.*]]
// SIMD-ONLY0:       if.then143:
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP60]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END144]]
// SIMD-ONLY0:       if.end144:
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV145:%.*]] = zext i8 [[TMP61]] to i32
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV146:%.*]] = zext i8 [[TMP62]] to i32
// SIMD-ONLY0-NEXT:    [[CMP147:%.*]] = icmp slt i32 [[CONV145]], [[CONV146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP147]], label [[IF_THEN149:%.*]], label [[IF_END150:%.*]]
// SIMD-ONLY0:       if.then149:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP63]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END150]]
// SIMD-ONLY0:       if.end150:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV151:%.*]] = zext i8 [[TMP64]] to i32
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV152:%.*]] = zext i8 [[TMP65]] to i32
// SIMD-ONLY0-NEXT:    [[CMP153:%.*]] = icmp sgt i32 [[CONV151]], [[CONV152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP153]], label [[IF_THEN155:%.*]], label [[IF_END156:%.*]]
// SIMD-ONLY0:       if.then155:
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP66]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END156]]
// SIMD-ONLY0:       if.end156:
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV157:%.*]] = zext i8 [[TMP67]] to i32
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV158:%.*]] = zext i8 [[TMP68]] to i32
// SIMD-ONLY0-NEXT:    [[CMP159:%.*]] = icmp slt i32 [[CONV157]], [[CONV158]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP159]], label [[IF_THEN161:%.*]], label [[IF_END162:%.*]]
// SIMD-ONLY0:       if.then161:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP69]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END162]]
// SIMD-ONLY0:       if.end162:
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV163:%.*]] = zext i8 [[TMP70]] to i32
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV164:%.*]] = zext i8 [[TMP71]] to i32
// SIMD-ONLY0-NEXT:    [[CMP165:%.*]] = icmp eq i32 [[CONV163]], [[CONV164]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP165]], label [[COND_TRUE167:%.*]], label [[COND_FALSE169:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV168:%.*]] = zext i8 [[TMP72]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END171:%.*]]
// SIMD-ONLY0:       cond.false169:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV170:%.*]] = zext i8 [[TMP73]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END171]]
// SIMD-ONLY0:       cond.end171:
// SIMD-ONLY0-NEXT:    [[COND172:%.*]] = phi i32 [ [[CONV168]], [[COND_TRUE167]] ], [ [[CONV170]], [[COND_FALSE169]] ]
// SIMD-ONLY0-NEXT:    [[CONV173:%.*]] = trunc i32 [[COND172]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV173]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV174:%.*]] = zext i8 [[TMP74]] to i32
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV175:%.*]] = zext i8 [[TMP75]] to i32
// SIMD-ONLY0-NEXT:    [[CMP176:%.*]] = icmp eq i32 [[CONV174]], [[CONV175]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP176]], label [[COND_TRUE178:%.*]], label [[COND_FALSE180:%.*]]
// SIMD-ONLY0:       cond.true178:
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV179:%.*]] = zext i8 [[TMP76]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END182:%.*]]
// SIMD-ONLY0:       cond.false180:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV181:%.*]] = zext i8 [[TMP77]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END182]]
// SIMD-ONLY0:       cond.end182:
// SIMD-ONLY0-NEXT:    [[COND183:%.*]] = phi i32 [ [[CONV179]], [[COND_TRUE178]] ], [ [[CONV181]], [[COND_FALSE180]] ]
// SIMD-ONLY0-NEXT:    [[CONV184:%.*]] = trunc i32 [[COND183]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV184]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV185:%.*]] = zext i8 [[TMP78]] to i32
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV186:%.*]] = zext i8 [[TMP79]] to i32
// SIMD-ONLY0-NEXT:    [[CMP187:%.*]] = icmp eq i32 [[CONV185]], [[CONV186]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP187]], label [[IF_THEN189:%.*]], label [[IF_END190:%.*]]
// SIMD-ONLY0:       if.then189:
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP80]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END190]]
// SIMD-ONLY0:       if.end190:
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV191:%.*]] = zext i8 [[TMP81]] to i32
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV192:%.*]] = zext i8 [[TMP82]] to i32
// SIMD-ONLY0-NEXT:    [[CMP193:%.*]] = icmp eq i32 [[CONV191]], [[CONV192]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP193]], label [[IF_THEN195:%.*]], label [[IF_END196:%.*]]
// SIMD-ONLY0:       if.then195:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP83]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END196]]
// SIMD-ONLY0:       if.end196:
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV197:%.*]] = sext i8 [[TMP84]] to i32
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV198:%.*]] = sext i8 [[TMP85]] to i32
// SIMD-ONLY0-NEXT:    [[CMP199:%.*]] = icmp sgt i32 [[CONV197]], [[CONV198]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP199]], label [[COND_TRUE201:%.*]], label [[COND_FALSE203:%.*]]
// SIMD-ONLY0:       cond.true201:
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV202:%.*]] = sext i8 [[TMP86]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END205:%.*]]
// SIMD-ONLY0:       cond.false203:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV204:%.*]] = sext i8 [[TMP87]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END205]]
// SIMD-ONLY0:       cond.end205:
// SIMD-ONLY0-NEXT:    [[COND206:%.*]] = phi i32 [ [[CONV202]], [[COND_TRUE201]] ], [ [[CONV204]], [[COND_FALSE203]] ]
// SIMD-ONLY0-NEXT:    [[CONV207:%.*]] = trunc i32 [[COND206]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV207]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV208:%.*]] = sext i8 [[TMP88]] to i32
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV209:%.*]] = sext i8 [[TMP89]] to i32
// SIMD-ONLY0-NEXT:    [[CMP210:%.*]] = icmp slt i32 [[CONV208]], [[CONV209]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP210]], label [[COND_TRUE212:%.*]], label [[COND_FALSE214:%.*]]
// SIMD-ONLY0:       cond.true212:
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV213:%.*]] = sext i8 [[TMP90]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END216:%.*]]
// SIMD-ONLY0:       cond.false214:
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV215:%.*]] = sext i8 [[TMP91]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END216]]
// SIMD-ONLY0:       cond.end216:
// SIMD-ONLY0-NEXT:    [[COND217:%.*]] = phi i32 [ [[CONV213]], [[COND_TRUE212]] ], [ [[CONV215]], [[COND_FALSE214]] ]
// SIMD-ONLY0-NEXT:    [[CONV218:%.*]] = trunc i32 [[COND217]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV218]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV219:%.*]] = sext i8 [[TMP92]] to i32
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV220:%.*]] = sext i8 [[TMP93]] to i32
// SIMD-ONLY0-NEXT:    [[CMP221:%.*]] = icmp sgt i32 [[CONV219]], [[CONV220]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP221]], label [[COND_TRUE223:%.*]], label [[COND_FALSE225:%.*]]
// SIMD-ONLY0:       cond.true223:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV224:%.*]] = sext i8 [[TMP94]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END227:%.*]]
// SIMD-ONLY0:       cond.false225:
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV226:%.*]] = sext i8 [[TMP95]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END227]]
// SIMD-ONLY0:       cond.end227:
// SIMD-ONLY0-NEXT:    [[COND228:%.*]] = phi i32 [ [[CONV224]], [[COND_TRUE223]] ], [ [[CONV226]], [[COND_FALSE225]] ]
// SIMD-ONLY0-NEXT:    [[CONV229:%.*]] = trunc i32 [[COND228]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV229]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV230:%.*]] = sext i8 [[TMP96]] to i32
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV231:%.*]] = sext i8 [[TMP97]] to i32
// SIMD-ONLY0-NEXT:    [[CMP232:%.*]] = icmp slt i32 [[CONV230]], [[CONV231]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP232]], label [[COND_TRUE234:%.*]], label [[COND_FALSE236:%.*]]
// SIMD-ONLY0:       cond.true234:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV235:%.*]] = sext i8 [[TMP98]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END238:%.*]]
// SIMD-ONLY0:       cond.false236:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV237:%.*]] = sext i8 [[TMP99]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END238]]
// SIMD-ONLY0:       cond.end238:
// SIMD-ONLY0-NEXT:    [[COND239:%.*]] = phi i32 [ [[CONV235]], [[COND_TRUE234]] ], [ [[CONV237]], [[COND_FALSE236]] ]
// SIMD-ONLY0-NEXT:    [[CONV240:%.*]] = trunc i32 [[COND239]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV240]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV241:%.*]] = sext i8 [[TMP100]] to i32
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV242:%.*]] = sext i8 [[TMP101]] to i32
// SIMD-ONLY0-NEXT:    [[CMP243:%.*]] = icmp sgt i32 [[CONV241]], [[CONV242]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP243]], label [[IF_THEN245:%.*]], label [[IF_END246:%.*]]
// SIMD-ONLY0:       if.then245:
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP102]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END246]]
// SIMD-ONLY0:       if.end246:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV247:%.*]] = sext i8 [[TMP103]] to i32
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV248:%.*]] = sext i8 [[TMP104]] to i32
// SIMD-ONLY0-NEXT:    [[CMP249:%.*]] = icmp slt i32 [[CONV247]], [[CONV248]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP249]], label [[IF_THEN251:%.*]], label [[IF_END252:%.*]]
// SIMD-ONLY0:       if.then251:
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP105]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END252]]
// SIMD-ONLY0:       if.end252:
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV253:%.*]] = sext i8 [[TMP106]] to i32
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV254:%.*]] = sext i8 [[TMP107]] to i32
// SIMD-ONLY0-NEXT:    [[CMP255:%.*]] = icmp sgt i32 [[CONV253]], [[CONV254]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP255]], label [[IF_THEN257:%.*]], label [[IF_END258:%.*]]
// SIMD-ONLY0:       if.then257:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP108]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END258]]
// SIMD-ONLY0:       if.end258:
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV259:%.*]] = sext i8 [[TMP109]] to i32
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV260:%.*]] = sext i8 [[TMP110]] to i32
// SIMD-ONLY0-NEXT:    [[CMP261:%.*]] = icmp slt i32 [[CONV259]], [[CONV260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP261]], label [[IF_THEN263:%.*]], label [[IF_END264:%.*]]
// SIMD-ONLY0:       if.then263:
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP111]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END264]]
// SIMD-ONLY0:       if.end264:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV265:%.*]] = sext i8 [[TMP112]] to i32
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV266:%.*]] = sext i8 [[TMP113]] to i32
// SIMD-ONLY0-NEXT:    [[CMP267:%.*]] = icmp eq i32 [[CONV265]], [[CONV266]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP267]], label [[COND_TRUE269:%.*]], label [[COND_FALSE271:%.*]]
// SIMD-ONLY0:       cond.true269:
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV270:%.*]] = sext i8 [[TMP114]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END273:%.*]]
// SIMD-ONLY0:       cond.false271:
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV272:%.*]] = sext i8 [[TMP115]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END273]]
// SIMD-ONLY0:       cond.end273:
// SIMD-ONLY0-NEXT:    [[COND274:%.*]] = phi i32 [ [[CONV270]], [[COND_TRUE269]] ], [ [[CONV272]], [[COND_FALSE271]] ]
// SIMD-ONLY0-NEXT:    [[CONV275:%.*]] = trunc i32 [[COND274]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV275]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV276:%.*]] = sext i8 [[TMP116]] to i32
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV277:%.*]] = sext i8 [[TMP117]] to i32
// SIMD-ONLY0-NEXT:    [[CMP278:%.*]] = icmp eq i32 [[CONV276]], [[CONV277]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP278]], label [[COND_TRUE280:%.*]], label [[COND_FALSE282:%.*]]
// SIMD-ONLY0:       cond.true280:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV281:%.*]] = sext i8 [[TMP118]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END284:%.*]]
// SIMD-ONLY0:       cond.false282:
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV283:%.*]] = sext i8 [[TMP119]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END284]]
// SIMD-ONLY0:       cond.end284:
// SIMD-ONLY0-NEXT:    [[COND285:%.*]] = phi i32 [ [[CONV281]], [[COND_TRUE280]] ], [ [[CONV283]], [[COND_FALSE282]] ]
// SIMD-ONLY0-NEXT:    [[CONV286:%.*]] = trunc i32 [[COND285]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV286]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV287:%.*]] = sext i8 [[TMP120]] to i32
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV288:%.*]] = sext i8 [[TMP121]] to i32
// SIMD-ONLY0-NEXT:    [[CMP289:%.*]] = icmp eq i32 [[CONV287]], [[CONV288]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP289]], label [[IF_THEN291:%.*]], label [[IF_END292:%.*]]
// SIMD-ONLY0:       if.then291:
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP122]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END292]]
// SIMD-ONLY0:       if.end292:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV293:%.*]] = sext i8 [[TMP123]] to i32
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV294:%.*]] = sext i8 [[TMP124]] to i32
// SIMD-ONLY0-NEXT:    [[CMP295:%.*]] = icmp eq i32 [[CONV293]], [[CONV294]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP295]], label [[IF_THEN297:%.*]], label [[IF_END298:%.*]]
// SIMD-ONLY0:       if.then297:
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP125]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END298]]
// SIMD-ONLY0:       if.end298:
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV299:%.*]] = zext i8 [[TMP126]] to i32
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV300:%.*]] = zext i8 [[TMP127]] to i32
// SIMD-ONLY0-NEXT:    [[CMP301:%.*]] = icmp sgt i32 [[CONV299]], [[CONV300]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP301]], label [[COND_TRUE303:%.*]], label [[COND_FALSE305:%.*]]
// SIMD-ONLY0:       cond.true303:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV304:%.*]] = zext i8 [[TMP128]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END307:%.*]]
// SIMD-ONLY0:       cond.false305:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV306:%.*]] = zext i8 [[TMP129]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END307]]
// SIMD-ONLY0:       cond.end307:
// SIMD-ONLY0-NEXT:    [[COND308:%.*]] = phi i32 [ [[CONV304]], [[COND_TRUE303]] ], [ [[CONV306]], [[COND_FALSE305]] ]
// SIMD-ONLY0-NEXT:    [[CONV309:%.*]] = trunc i32 [[COND308]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV309]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV310:%.*]] = zext i8 [[TMP130]] to i32
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV311:%.*]] = zext i8 [[TMP131]] to i32
// SIMD-ONLY0-NEXT:    [[CMP312:%.*]] = icmp slt i32 [[CONV310]], [[CONV311]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP312]], label [[COND_TRUE314:%.*]], label [[COND_FALSE316:%.*]]
// SIMD-ONLY0:       cond.true314:
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV315:%.*]] = zext i8 [[TMP132]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END318:%.*]]
// SIMD-ONLY0:       cond.false316:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV317:%.*]] = zext i8 [[TMP133]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END318]]
// SIMD-ONLY0:       cond.end318:
// SIMD-ONLY0-NEXT:    [[COND319:%.*]] = phi i32 [ [[CONV315]], [[COND_TRUE314]] ], [ [[CONV317]], [[COND_FALSE316]] ]
// SIMD-ONLY0-NEXT:    [[CONV320:%.*]] = trunc i32 [[COND319]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV320]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV321:%.*]] = zext i8 [[TMP134]] to i32
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV322:%.*]] = zext i8 [[TMP135]] to i32
// SIMD-ONLY0-NEXT:    [[CMP323:%.*]] = icmp sgt i32 [[CONV321]], [[CONV322]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP323]], label [[COND_TRUE325:%.*]], label [[COND_FALSE327:%.*]]
// SIMD-ONLY0:       cond.true325:
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV326:%.*]] = zext i8 [[TMP136]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END329:%.*]]
// SIMD-ONLY0:       cond.false327:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV328:%.*]] = zext i8 [[TMP137]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END329]]
// SIMD-ONLY0:       cond.end329:
// SIMD-ONLY0-NEXT:    [[COND330:%.*]] = phi i32 [ [[CONV326]], [[COND_TRUE325]] ], [ [[CONV328]], [[COND_FALSE327]] ]
// SIMD-ONLY0-NEXT:    [[CONV331:%.*]] = trunc i32 [[COND330]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV331]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV332:%.*]] = zext i8 [[TMP138]] to i32
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV333:%.*]] = zext i8 [[TMP139]] to i32
// SIMD-ONLY0-NEXT:    [[CMP334:%.*]] = icmp slt i32 [[CONV332]], [[CONV333]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP334]], label [[COND_TRUE336:%.*]], label [[COND_FALSE338:%.*]]
// SIMD-ONLY0:       cond.true336:
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV337:%.*]] = zext i8 [[TMP140]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END340:%.*]]
// SIMD-ONLY0:       cond.false338:
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV339:%.*]] = zext i8 [[TMP141]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END340]]
// SIMD-ONLY0:       cond.end340:
// SIMD-ONLY0-NEXT:    [[COND341:%.*]] = phi i32 [ [[CONV337]], [[COND_TRUE336]] ], [ [[CONV339]], [[COND_FALSE338]] ]
// SIMD-ONLY0-NEXT:    [[CONV342:%.*]] = trunc i32 [[COND341]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV342]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV343:%.*]] = zext i8 [[TMP142]] to i32
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV344:%.*]] = zext i8 [[TMP143]] to i32
// SIMD-ONLY0-NEXT:    [[CMP345:%.*]] = icmp sgt i32 [[CONV343]], [[CONV344]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP345]], label [[IF_THEN347:%.*]], label [[IF_END348:%.*]]
// SIMD-ONLY0:       if.then347:
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP144]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END348]]
// SIMD-ONLY0:       if.end348:
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV349:%.*]] = zext i8 [[TMP145]] to i32
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV350:%.*]] = zext i8 [[TMP146]] to i32
// SIMD-ONLY0-NEXT:    [[CMP351:%.*]] = icmp slt i32 [[CONV349]], [[CONV350]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP351]], label [[IF_THEN353:%.*]], label [[IF_END354:%.*]]
// SIMD-ONLY0:       if.then353:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP147]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END354]]
// SIMD-ONLY0:       if.end354:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV355:%.*]] = zext i8 [[TMP148]] to i32
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV356:%.*]] = zext i8 [[TMP149]] to i32
// SIMD-ONLY0-NEXT:    [[CMP357:%.*]] = icmp sgt i32 [[CONV355]], [[CONV356]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP357]], label [[IF_THEN359:%.*]], label [[IF_END360:%.*]]
// SIMD-ONLY0:       if.then359:
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP150]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END360]]
// SIMD-ONLY0:       if.end360:
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV361:%.*]] = zext i8 [[TMP151]] to i32
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV362:%.*]] = zext i8 [[TMP152]] to i32
// SIMD-ONLY0-NEXT:    [[CMP363:%.*]] = icmp slt i32 [[CONV361]], [[CONV362]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP363]], label [[IF_THEN365:%.*]], label [[IF_END366:%.*]]
// SIMD-ONLY0:       if.then365:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP153]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END366]]
// SIMD-ONLY0:       if.end366:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV367:%.*]] = zext i8 [[TMP154]] to i32
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV368:%.*]] = zext i8 [[TMP155]] to i32
// SIMD-ONLY0-NEXT:    [[CMP369:%.*]] = icmp eq i32 [[CONV367]], [[CONV368]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP369]], label [[COND_TRUE371:%.*]], label [[COND_FALSE373:%.*]]
// SIMD-ONLY0:       cond.true371:
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV372:%.*]] = zext i8 [[TMP156]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END375:%.*]]
// SIMD-ONLY0:       cond.false373:
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV374:%.*]] = zext i8 [[TMP157]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END375]]
// SIMD-ONLY0:       cond.end375:
// SIMD-ONLY0-NEXT:    [[COND376:%.*]] = phi i32 [ [[CONV372]], [[COND_TRUE371]] ], [ [[CONV374]], [[COND_FALSE373]] ]
// SIMD-ONLY0-NEXT:    [[CONV377:%.*]] = trunc i32 [[COND376]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV377]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV378:%.*]] = zext i8 [[TMP158]] to i32
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV379:%.*]] = zext i8 [[TMP159]] to i32
// SIMD-ONLY0-NEXT:    [[CMP380:%.*]] = icmp eq i32 [[CONV378]], [[CONV379]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP380]], label [[COND_TRUE382:%.*]], label [[COND_FALSE384:%.*]]
// SIMD-ONLY0:       cond.true382:
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV383:%.*]] = zext i8 [[TMP160]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END386:%.*]]
// SIMD-ONLY0:       cond.false384:
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV385:%.*]] = zext i8 [[TMP161]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END386]]
// SIMD-ONLY0:       cond.end386:
// SIMD-ONLY0-NEXT:    [[COND387:%.*]] = phi i32 [ [[CONV383]], [[COND_TRUE382]] ], [ [[CONV385]], [[COND_FALSE384]] ]
// SIMD-ONLY0-NEXT:    [[CONV388:%.*]] = trunc i32 [[COND387]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV388]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV389:%.*]] = zext i8 [[TMP162]] to i32
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV390:%.*]] = zext i8 [[TMP163]] to i32
// SIMD-ONLY0-NEXT:    [[CMP391:%.*]] = icmp eq i32 [[CONV389]], [[CONV390]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP391]], label [[IF_THEN393:%.*]], label [[IF_END394:%.*]]
// SIMD-ONLY0:       if.then393:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP164]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END394]]
// SIMD-ONLY0:       if.end394:
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV395:%.*]] = zext i8 [[TMP165]] to i32
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV396:%.*]] = zext i8 [[TMP166]] to i32
// SIMD-ONLY0-NEXT:    [[CMP397:%.*]] = icmp eq i32 [[CONV395]], [[CONV396]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP397]], label [[IF_THEN399:%.*]], label [[IF_END400:%.*]]
// SIMD-ONLY0:       if.then399:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP167]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END400]]
// SIMD-ONLY0:       if.end400:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV401:%.*]] = sext i8 [[TMP168]] to i32
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV402:%.*]] = sext i8 [[TMP169]] to i32
// SIMD-ONLY0-NEXT:    [[CMP403:%.*]] = icmp sgt i32 [[CONV401]], [[CONV402]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP403]], label [[COND_TRUE405:%.*]], label [[COND_FALSE407:%.*]]
// SIMD-ONLY0:       cond.true405:
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV406:%.*]] = sext i8 [[TMP170]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END409:%.*]]
// SIMD-ONLY0:       cond.false407:
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV408:%.*]] = sext i8 [[TMP171]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END409]]
// SIMD-ONLY0:       cond.end409:
// SIMD-ONLY0-NEXT:    [[COND410:%.*]] = phi i32 [ [[CONV406]], [[COND_TRUE405]] ], [ [[CONV408]], [[COND_FALSE407]] ]
// SIMD-ONLY0-NEXT:    [[CONV411:%.*]] = trunc i32 [[COND410]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV411]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV412:%.*]] = sext i8 [[TMP172]] to i32
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV413:%.*]] = sext i8 [[TMP173]] to i32
// SIMD-ONLY0-NEXT:    [[CMP414:%.*]] = icmp slt i32 [[CONV412]], [[CONV413]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP414]], label [[COND_TRUE416:%.*]], label [[COND_FALSE418:%.*]]
// SIMD-ONLY0:       cond.true416:
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV417:%.*]] = sext i8 [[TMP174]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END420:%.*]]
// SIMD-ONLY0:       cond.false418:
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV419:%.*]] = sext i8 [[TMP175]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END420]]
// SIMD-ONLY0:       cond.end420:
// SIMD-ONLY0-NEXT:    [[COND421:%.*]] = phi i32 [ [[CONV417]], [[COND_TRUE416]] ], [ [[CONV419]], [[COND_FALSE418]] ]
// SIMD-ONLY0-NEXT:    [[CONV422:%.*]] = trunc i32 [[COND421]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV422]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV423:%.*]] = sext i8 [[TMP176]] to i32
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV424:%.*]] = sext i8 [[TMP177]] to i32
// SIMD-ONLY0-NEXT:    [[CMP425:%.*]] = icmp sgt i32 [[CONV423]], [[CONV424]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP425]], label [[COND_TRUE427:%.*]], label [[COND_FALSE429:%.*]]
// SIMD-ONLY0:       cond.true427:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV428:%.*]] = sext i8 [[TMP178]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END431:%.*]]
// SIMD-ONLY0:       cond.false429:
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV430:%.*]] = sext i8 [[TMP179]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END431]]
// SIMD-ONLY0:       cond.end431:
// SIMD-ONLY0-NEXT:    [[COND432:%.*]] = phi i32 [ [[CONV428]], [[COND_TRUE427]] ], [ [[CONV430]], [[COND_FALSE429]] ]
// SIMD-ONLY0-NEXT:    [[CONV433:%.*]] = trunc i32 [[COND432]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV433]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV434:%.*]] = sext i8 [[TMP180]] to i32
// SIMD-ONLY0-NEXT:    [[TMP181:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV435:%.*]] = sext i8 [[TMP181]] to i32
// SIMD-ONLY0-NEXT:    [[CMP436:%.*]] = icmp slt i32 [[CONV434]], [[CONV435]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP436]], label [[COND_TRUE438:%.*]], label [[COND_FALSE440:%.*]]
// SIMD-ONLY0:       cond.true438:
// SIMD-ONLY0-NEXT:    [[TMP182:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV439:%.*]] = sext i8 [[TMP182]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END442:%.*]]
// SIMD-ONLY0:       cond.false440:
// SIMD-ONLY0-NEXT:    [[TMP183:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV441:%.*]] = sext i8 [[TMP183]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END442]]
// SIMD-ONLY0:       cond.end442:
// SIMD-ONLY0-NEXT:    [[COND443:%.*]] = phi i32 [ [[CONV439]], [[COND_TRUE438]] ], [ [[CONV441]], [[COND_FALSE440]] ]
// SIMD-ONLY0-NEXT:    [[CONV444:%.*]] = trunc i32 [[COND443]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV444]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP184:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV445:%.*]] = sext i8 [[TMP184]] to i32
// SIMD-ONLY0-NEXT:    [[TMP185:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV446:%.*]] = sext i8 [[TMP185]] to i32
// SIMD-ONLY0-NEXT:    [[CMP447:%.*]] = icmp sgt i32 [[CONV445]], [[CONV446]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP447]], label [[IF_THEN449:%.*]], label [[IF_END450:%.*]]
// SIMD-ONLY0:       if.then449:
// SIMD-ONLY0-NEXT:    [[TMP186:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP186]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END450]]
// SIMD-ONLY0:       if.end450:
// SIMD-ONLY0-NEXT:    [[TMP187:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV451:%.*]] = sext i8 [[TMP187]] to i32
// SIMD-ONLY0-NEXT:    [[TMP188:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV452:%.*]] = sext i8 [[TMP188]] to i32
// SIMD-ONLY0-NEXT:    [[CMP453:%.*]] = icmp slt i32 [[CONV451]], [[CONV452]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP453]], label [[IF_THEN455:%.*]], label [[IF_END456:%.*]]
// SIMD-ONLY0:       if.then455:
// SIMD-ONLY0-NEXT:    [[TMP189:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP189]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END456]]
// SIMD-ONLY0:       if.end456:
// SIMD-ONLY0-NEXT:    [[TMP190:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV457:%.*]] = sext i8 [[TMP190]] to i32
// SIMD-ONLY0-NEXT:    [[TMP191:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV458:%.*]] = sext i8 [[TMP191]] to i32
// SIMD-ONLY0-NEXT:    [[CMP459:%.*]] = icmp sgt i32 [[CONV457]], [[CONV458]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP459]], label [[IF_THEN461:%.*]], label [[IF_END462:%.*]]
// SIMD-ONLY0:       if.then461:
// SIMD-ONLY0-NEXT:    [[TMP192:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP192]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END462]]
// SIMD-ONLY0:       if.end462:
// SIMD-ONLY0-NEXT:    [[TMP193:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV463:%.*]] = sext i8 [[TMP193]] to i32
// SIMD-ONLY0-NEXT:    [[TMP194:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV464:%.*]] = sext i8 [[TMP194]] to i32
// SIMD-ONLY0-NEXT:    [[CMP465:%.*]] = icmp slt i32 [[CONV463]], [[CONV464]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP465]], label [[IF_THEN467:%.*]], label [[IF_END468:%.*]]
// SIMD-ONLY0:       if.then467:
// SIMD-ONLY0-NEXT:    [[TMP195:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP195]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END468]]
// SIMD-ONLY0:       if.end468:
// SIMD-ONLY0-NEXT:    [[TMP196:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV469:%.*]] = sext i8 [[TMP196]] to i32
// SIMD-ONLY0-NEXT:    [[TMP197:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV470:%.*]] = sext i8 [[TMP197]] to i32
// SIMD-ONLY0-NEXT:    [[CMP471:%.*]] = icmp eq i32 [[CONV469]], [[CONV470]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP471]], label [[COND_TRUE473:%.*]], label [[COND_FALSE475:%.*]]
// SIMD-ONLY0:       cond.true473:
// SIMD-ONLY0-NEXT:    [[TMP198:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV474:%.*]] = sext i8 [[TMP198]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END477:%.*]]
// SIMD-ONLY0:       cond.false475:
// SIMD-ONLY0-NEXT:    [[TMP199:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV476:%.*]] = sext i8 [[TMP199]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END477]]
// SIMD-ONLY0:       cond.end477:
// SIMD-ONLY0-NEXT:    [[COND478:%.*]] = phi i32 [ [[CONV474]], [[COND_TRUE473]] ], [ [[CONV476]], [[COND_FALSE475]] ]
// SIMD-ONLY0-NEXT:    [[CONV479:%.*]] = trunc i32 [[COND478]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV479]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP200:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV480:%.*]] = sext i8 [[TMP200]] to i32
// SIMD-ONLY0-NEXT:    [[TMP201:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV481:%.*]] = sext i8 [[TMP201]] to i32
// SIMD-ONLY0-NEXT:    [[CMP482:%.*]] = icmp eq i32 [[CONV480]], [[CONV481]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP482]], label [[COND_TRUE484:%.*]], label [[COND_FALSE486:%.*]]
// SIMD-ONLY0:       cond.true484:
// SIMD-ONLY0-NEXT:    [[TMP202:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV485:%.*]] = sext i8 [[TMP202]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END488:%.*]]
// SIMD-ONLY0:       cond.false486:
// SIMD-ONLY0-NEXT:    [[TMP203:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV487:%.*]] = sext i8 [[TMP203]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END488]]
// SIMD-ONLY0:       cond.end488:
// SIMD-ONLY0-NEXT:    [[COND489:%.*]] = phi i32 [ [[CONV485]], [[COND_TRUE484]] ], [ [[CONV487]], [[COND_FALSE486]] ]
// SIMD-ONLY0-NEXT:    [[CONV490:%.*]] = trunc i32 [[COND489]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV490]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP204:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV491:%.*]] = sext i8 [[TMP204]] to i32
// SIMD-ONLY0-NEXT:    [[TMP205:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV492:%.*]] = sext i8 [[TMP205]] to i32
// SIMD-ONLY0-NEXT:    [[CMP493:%.*]] = icmp eq i32 [[CONV491]], [[CONV492]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP493]], label [[IF_THEN495:%.*]], label [[IF_END496:%.*]]
// SIMD-ONLY0:       if.then495:
// SIMD-ONLY0-NEXT:    [[TMP206:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP206]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END496]]
// SIMD-ONLY0:       if.end496:
// SIMD-ONLY0-NEXT:    [[TMP207:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV497:%.*]] = sext i8 [[TMP207]] to i32
// SIMD-ONLY0-NEXT:    [[TMP208:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV498:%.*]] = sext i8 [[TMP208]] to i32
// SIMD-ONLY0-NEXT:    [[CMP499:%.*]] = icmp eq i32 [[CONV497]], [[CONV498]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP499]], label [[IF_THEN501:%.*]], label [[IF_END502:%.*]]
// SIMD-ONLY0:       if.then501:
// SIMD-ONLY0-NEXT:    [[TMP209:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP209]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END502]]
// SIMD-ONLY0:       if.end502:
// SIMD-ONLY0-NEXT:    [[TMP210:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV503:%.*]] = zext i8 [[TMP210]] to i32
// SIMD-ONLY0-NEXT:    [[TMP211:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV504:%.*]] = zext i8 [[TMP211]] to i32
// SIMD-ONLY0-NEXT:    [[CMP505:%.*]] = icmp sgt i32 [[CONV503]], [[CONV504]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP505]], label [[COND_TRUE507:%.*]], label [[COND_FALSE509:%.*]]
// SIMD-ONLY0:       cond.true507:
// SIMD-ONLY0-NEXT:    [[TMP212:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV508:%.*]] = zext i8 [[TMP212]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END511:%.*]]
// SIMD-ONLY0:       cond.false509:
// SIMD-ONLY0-NEXT:    [[TMP213:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV510:%.*]] = zext i8 [[TMP213]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END511]]
// SIMD-ONLY0:       cond.end511:
// SIMD-ONLY0-NEXT:    [[COND512:%.*]] = phi i32 [ [[CONV508]], [[COND_TRUE507]] ], [ [[CONV510]], [[COND_FALSE509]] ]
// SIMD-ONLY0-NEXT:    [[CONV513:%.*]] = trunc i32 [[COND512]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV513]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP214:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV514:%.*]] = zext i8 [[TMP214]] to i32
// SIMD-ONLY0-NEXT:    [[TMP215:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV515:%.*]] = zext i8 [[TMP215]] to i32
// SIMD-ONLY0-NEXT:    [[CMP516:%.*]] = icmp slt i32 [[CONV514]], [[CONV515]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP516]], label [[COND_TRUE518:%.*]], label [[COND_FALSE520:%.*]]
// SIMD-ONLY0:       cond.true518:
// SIMD-ONLY0-NEXT:    [[TMP216:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV519:%.*]] = zext i8 [[TMP216]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END522:%.*]]
// SIMD-ONLY0:       cond.false520:
// SIMD-ONLY0-NEXT:    [[TMP217:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV521:%.*]] = zext i8 [[TMP217]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END522]]
// SIMD-ONLY0:       cond.end522:
// SIMD-ONLY0-NEXT:    [[COND523:%.*]] = phi i32 [ [[CONV519]], [[COND_TRUE518]] ], [ [[CONV521]], [[COND_FALSE520]] ]
// SIMD-ONLY0-NEXT:    [[CONV524:%.*]] = trunc i32 [[COND523]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV524]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP218:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV525:%.*]] = zext i8 [[TMP218]] to i32
// SIMD-ONLY0-NEXT:    [[TMP219:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV526:%.*]] = zext i8 [[TMP219]] to i32
// SIMD-ONLY0-NEXT:    [[CMP527:%.*]] = icmp sgt i32 [[CONV525]], [[CONV526]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP527]], label [[COND_TRUE529:%.*]], label [[COND_FALSE531:%.*]]
// SIMD-ONLY0:       cond.true529:
// SIMD-ONLY0-NEXT:    [[TMP220:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV530:%.*]] = zext i8 [[TMP220]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END533:%.*]]
// SIMD-ONLY0:       cond.false531:
// SIMD-ONLY0-NEXT:    [[TMP221:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV532:%.*]] = zext i8 [[TMP221]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END533]]
// SIMD-ONLY0:       cond.end533:
// SIMD-ONLY0-NEXT:    [[COND534:%.*]] = phi i32 [ [[CONV530]], [[COND_TRUE529]] ], [ [[CONV532]], [[COND_FALSE531]] ]
// SIMD-ONLY0-NEXT:    [[CONV535:%.*]] = trunc i32 [[COND534]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV535]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP222:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV536:%.*]] = zext i8 [[TMP222]] to i32
// SIMD-ONLY0-NEXT:    [[TMP223:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV537:%.*]] = zext i8 [[TMP223]] to i32
// SIMD-ONLY0-NEXT:    [[CMP538:%.*]] = icmp slt i32 [[CONV536]], [[CONV537]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP538]], label [[COND_TRUE540:%.*]], label [[COND_FALSE542:%.*]]
// SIMD-ONLY0:       cond.true540:
// SIMD-ONLY0-NEXT:    [[TMP224:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV541:%.*]] = zext i8 [[TMP224]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END544:%.*]]
// SIMD-ONLY0:       cond.false542:
// SIMD-ONLY0-NEXT:    [[TMP225:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV543:%.*]] = zext i8 [[TMP225]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END544]]
// SIMD-ONLY0:       cond.end544:
// SIMD-ONLY0-NEXT:    [[COND545:%.*]] = phi i32 [ [[CONV541]], [[COND_TRUE540]] ], [ [[CONV543]], [[COND_FALSE542]] ]
// SIMD-ONLY0-NEXT:    [[CONV546:%.*]] = trunc i32 [[COND545]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV546]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP226:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV547:%.*]] = zext i8 [[TMP226]] to i32
// SIMD-ONLY0-NEXT:    [[TMP227:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV548:%.*]] = zext i8 [[TMP227]] to i32
// SIMD-ONLY0-NEXT:    [[CMP549:%.*]] = icmp sgt i32 [[CONV547]], [[CONV548]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP549]], label [[IF_THEN551:%.*]], label [[IF_END552:%.*]]
// SIMD-ONLY0:       if.then551:
// SIMD-ONLY0-NEXT:    [[TMP228:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP228]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END552]]
// SIMD-ONLY0:       if.end552:
// SIMD-ONLY0-NEXT:    [[TMP229:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV553:%.*]] = zext i8 [[TMP229]] to i32
// SIMD-ONLY0-NEXT:    [[TMP230:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV554:%.*]] = zext i8 [[TMP230]] to i32
// SIMD-ONLY0-NEXT:    [[CMP555:%.*]] = icmp slt i32 [[CONV553]], [[CONV554]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP555]], label [[IF_THEN557:%.*]], label [[IF_END558:%.*]]
// SIMD-ONLY0:       if.then557:
// SIMD-ONLY0-NEXT:    [[TMP231:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP231]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END558]]
// SIMD-ONLY0:       if.end558:
// SIMD-ONLY0-NEXT:    [[TMP232:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV559:%.*]] = zext i8 [[TMP232]] to i32
// SIMD-ONLY0-NEXT:    [[TMP233:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV560:%.*]] = zext i8 [[TMP233]] to i32
// SIMD-ONLY0-NEXT:    [[CMP561:%.*]] = icmp sgt i32 [[CONV559]], [[CONV560]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP561]], label [[IF_THEN563:%.*]], label [[IF_END564:%.*]]
// SIMD-ONLY0:       if.then563:
// SIMD-ONLY0-NEXT:    [[TMP234:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP234]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END564]]
// SIMD-ONLY0:       if.end564:
// SIMD-ONLY0-NEXT:    [[TMP235:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV565:%.*]] = zext i8 [[TMP235]] to i32
// SIMD-ONLY0-NEXT:    [[TMP236:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV566:%.*]] = zext i8 [[TMP236]] to i32
// SIMD-ONLY0-NEXT:    [[CMP567:%.*]] = icmp slt i32 [[CONV565]], [[CONV566]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP567]], label [[IF_THEN569:%.*]], label [[IF_END570:%.*]]
// SIMD-ONLY0:       if.then569:
// SIMD-ONLY0-NEXT:    [[TMP237:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP237]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END570]]
// SIMD-ONLY0:       if.end570:
// SIMD-ONLY0-NEXT:    [[TMP238:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV571:%.*]] = zext i8 [[TMP238]] to i32
// SIMD-ONLY0-NEXT:    [[TMP239:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV572:%.*]] = zext i8 [[TMP239]] to i32
// SIMD-ONLY0-NEXT:    [[CMP573:%.*]] = icmp eq i32 [[CONV571]], [[CONV572]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP573]], label [[COND_TRUE575:%.*]], label [[COND_FALSE577:%.*]]
// SIMD-ONLY0:       cond.true575:
// SIMD-ONLY0-NEXT:    [[TMP240:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV576:%.*]] = zext i8 [[TMP240]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END579:%.*]]
// SIMD-ONLY0:       cond.false577:
// SIMD-ONLY0-NEXT:    [[TMP241:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV578:%.*]] = zext i8 [[TMP241]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END579]]
// SIMD-ONLY0:       cond.end579:
// SIMD-ONLY0-NEXT:    [[COND580:%.*]] = phi i32 [ [[CONV576]], [[COND_TRUE575]] ], [ [[CONV578]], [[COND_FALSE577]] ]
// SIMD-ONLY0-NEXT:    [[CONV581:%.*]] = trunc i32 [[COND580]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV581]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP242:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV582:%.*]] = zext i8 [[TMP242]] to i32
// SIMD-ONLY0-NEXT:    [[TMP243:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV583:%.*]] = zext i8 [[TMP243]] to i32
// SIMD-ONLY0-NEXT:    [[CMP584:%.*]] = icmp eq i32 [[CONV582]], [[CONV583]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP584]], label [[COND_TRUE586:%.*]], label [[COND_FALSE588:%.*]]
// SIMD-ONLY0:       cond.true586:
// SIMD-ONLY0-NEXT:    [[TMP244:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV587:%.*]] = zext i8 [[TMP244]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END590:%.*]]
// SIMD-ONLY0:       cond.false588:
// SIMD-ONLY0-NEXT:    [[TMP245:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV589:%.*]] = zext i8 [[TMP245]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END590]]
// SIMD-ONLY0:       cond.end590:
// SIMD-ONLY0-NEXT:    [[COND591:%.*]] = phi i32 [ [[CONV587]], [[COND_TRUE586]] ], [ [[CONV589]], [[COND_FALSE588]] ]
// SIMD-ONLY0-NEXT:    [[CONV592:%.*]] = trunc i32 [[COND591]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV592]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP246:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV593:%.*]] = zext i8 [[TMP246]] to i32
// SIMD-ONLY0-NEXT:    [[TMP247:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV594:%.*]] = zext i8 [[TMP247]] to i32
// SIMD-ONLY0-NEXT:    [[CMP595:%.*]] = icmp eq i32 [[CONV593]], [[CONV594]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP595]], label [[IF_THEN597:%.*]], label [[IF_END598:%.*]]
// SIMD-ONLY0:       if.then597:
// SIMD-ONLY0-NEXT:    [[TMP248:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP248]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END598]]
// SIMD-ONLY0:       if.end598:
// SIMD-ONLY0-NEXT:    [[TMP249:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV599:%.*]] = zext i8 [[TMP249]] to i32
// SIMD-ONLY0-NEXT:    [[TMP250:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV600:%.*]] = zext i8 [[TMP250]] to i32
// SIMD-ONLY0-NEXT:    [[CMP601:%.*]] = icmp eq i32 [[CONV599]], [[CONV600]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP601]], label [[IF_THEN603:%.*]], label [[IF_END604:%.*]]
// SIMD-ONLY0:       if.then603:
// SIMD-ONLY0-NEXT:    [[TMP251:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP251]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END604]]
// SIMD-ONLY0:       if.end604:
// SIMD-ONLY0-NEXT:    [[TMP252:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV605:%.*]] = sext i8 [[TMP252]] to i32
// SIMD-ONLY0-NEXT:    [[TMP253:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV606:%.*]] = sext i8 [[TMP253]] to i32
// SIMD-ONLY0-NEXT:    [[CMP607:%.*]] = icmp sgt i32 [[CONV605]], [[CONV606]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP607]], label [[COND_TRUE609:%.*]], label [[COND_FALSE611:%.*]]
// SIMD-ONLY0:       cond.true609:
// SIMD-ONLY0-NEXT:    [[TMP254:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV610:%.*]] = sext i8 [[TMP254]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END613:%.*]]
// SIMD-ONLY0:       cond.false611:
// SIMD-ONLY0-NEXT:    [[TMP255:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV612:%.*]] = sext i8 [[TMP255]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END613]]
// SIMD-ONLY0:       cond.end613:
// SIMD-ONLY0-NEXT:    [[COND614:%.*]] = phi i32 [ [[CONV610]], [[COND_TRUE609]] ], [ [[CONV612]], [[COND_FALSE611]] ]
// SIMD-ONLY0-NEXT:    [[CONV615:%.*]] = trunc i32 [[COND614]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV615]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP256:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV616:%.*]] = sext i8 [[TMP256]] to i32
// SIMD-ONLY0-NEXT:    [[TMP257:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV617:%.*]] = sext i8 [[TMP257]] to i32
// SIMD-ONLY0-NEXT:    [[CMP618:%.*]] = icmp slt i32 [[CONV616]], [[CONV617]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP618]], label [[COND_TRUE620:%.*]], label [[COND_FALSE622:%.*]]
// SIMD-ONLY0:       cond.true620:
// SIMD-ONLY0-NEXT:    [[TMP258:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV621:%.*]] = sext i8 [[TMP258]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END624:%.*]]
// SIMD-ONLY0:       cond.false622:
// SIMD-ONLY0-NEXT:    [[TMP259:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV623:%.*]] = sext i8 [[TMP259]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END624]]
// SIMD-ONLY0:       cond.end624:
// SIMD-ONLY0-NEXT:    [[COND625:%.*]] = phi i32 [ [[CONV621]], [[COND_TRUE620]] ], [ [[CONV623]], [[COND_FALSE622]] ]
// SIMD-ONLY0-NEXT:    [[CONV626:%.*]] = trunc i32 [[COND625]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV626]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP260:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV627:%.*]] = sext i8 [[TMP260]] to i32
// SIMD-ONLY0-NEXT:    [[TMP261:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV628:%.*]] = sext i8 [[TMP261]] to i32
// SIMD-ONLY0-NEXT:    [[CMP629:%.*]] = icmp sgt i32 [[CONV627]], [[CONV628]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP629]], label [[COND_TRUE631:%.*]], label [[COND_FALSE633:%.*]]
// SIMD-ONLY0:       cond.true631:
// SIMD-ONLY0-NEXT:    [[TMP262:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV632:%.*]] = sext i8 [[TMP262]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END635:%.*]]
// SIMD-ONLY0:       cond.false633:
// SIMD-ONLY0-NEXT:    [[TMP263:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV634:%.*]] = sext i8 [[TMP263]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END635]]
// SIMD-ONLY0:       cond.end635:
// SIMD-ONLY0-NEXT:    [[COND636:%.*]] = phi i32 [ [[CONV632]], [[COND_TRUE631]] ], [ [[CONV634]], [[COND_FALSE633]] ]
// SIMD-ONLY0-NEXT:    [[CONV637:%.*]] = trunc i32 [[COND636]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV637]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP264:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV638:%.*]] = sext i8 [[TMP264]] to i32
// SIMD-ONLY0-NEXT:    [[TMP265:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV639:%.*]] = sext i8 [[TMP265]] to i32
// SIMD-ONLY0-NEXT:    [[CMP640:%.*]] = icmp slt i32 [[CONV638]], [[CONV639]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP640]], label [[COND_TRUE642:%.*]], label [[COND_FALSE644:%.*]]
// SIMD-ONLY0:       cond.true642:
// SIMD-ONLY0-NEXT:    [[TMP266:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV643:%.*]] = sext i8 [[TMP266]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END646:%.*]]
// SIMD-ONLY0:       cond.false644:
// SIMD-ONLY0-NEXT:    [[TMP267:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV645:%.*]] = sext i8 [[TMP267]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END646]]
// SIMD-ONLY0:       cond.end646:
// SIMD-ONLY0-NEXT:    [[COND647:%.*]] = phi i32 [ [[CONV643]], [[COND_TRUE642]] ], [ [[CONV645]], [[COND_FALSE644]] ]
// SIMD-ONLY0-NEXT:    [[CONV648:%.*]] = trunc i32 [[COND647]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV648]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP268:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV649:%.*]] = sext i8 [[TMP268]] to i32
// SIMD-ONLY0-NEXT:    [[TMP269:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV650:%.*]] = sext i8 [[TMP269]] to i32
// SIMD-ONLY0-NEXT:    [[CMP651:%.*]] = icmp sgt i32 [[CONV649]], [[CONV650]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP651]], label [[IF_THEN653:%.*]], label [[IF_END654:%.*]]
// SIMD-ONLY0:       if.then653:
// SIMD-ONLY0-NEXT:    [[TMP270:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP270]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END654]]
// SIMD-ONLY0:       if.end654:
// SIMD-ONLY0-NEXT:    [[TMP271:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV655:%.*]] = sext i8 [[TMP271]] to i32
// SIMD-ONLY0-NEXT:    [[TMP272:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV656:%.*]] = sext i8 [[TMP272]] to i32
// SIMD-ONLY0-NEXT:    [[CMP657:%.*]] = icmp slt i32 [[CONV655]], [[CONV656]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP657]], label [[IF_THEN659:%.*]], label [[IF_END660:%.*]]
// SIMD-ONLY0:       if.then659:
// SIMD-ONLY0-NEXT:    [[TMP273:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP273]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END660]]
// SIMD-ONLY0:       if.end660:
// SIMD-ONLY0-NEXT:    [[TMP274:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV661:%.*]] = sext i8 [[TMP274]] to i32
// SIMD-ONLY0-NEXT:    [[TMP275:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV662:%.*]] = sext i8 [[TMP275]] to i32
// SIMD-ONLY0-NEXT:    [[CMP663:%.*]] = icmp sgt i32 [[CONV661]], [[CONV662]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP663]], label [[IF_THEN665:%.*]], label [[IF_END666:%.*]]
// SIMD-ONLY0:       if.then665:
// SIMD-ONLY0-NEXT:    [[TMP276:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP276]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END666]]
// SIMD-ONLY0:       if.end666:
// SIMD-ONLY0-NEXT:    [[TMP277:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV667:%.*]] = sext i8 [[TMP277]] to i32
// SIMD-ONLY0-NEXT:    [[TMP278:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV668:%.*]] = sext i8 [[TMP278]] to i32
// SIMD-ONLY0-NEXT:    [[CMP669:%.*]] = icmp slt i32 [[CONV667]], [[CONV668]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP669]], label [[IF_THEN671:%.*]], label [[IF_END672:%.*]]
// SIMD-ONLY0:       if.then671:
// SIMD-ONLY0-NEXT:    [[TMP279:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP279]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END672]]
// SIMD-ONLY0:       if.end672:
// SIMD-ONLY0-NEXT:    [[TMP280:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV673:%.*]] = sext i8 [[TMP280]] to i32
// SIMD-ONLY0-NEXT:    [[TMP281:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV674:%.*]] = sext i8 [[TMP281]] to i32
// SIMD-ONLY0-NEXT:    [[CMP675:%.*]] = icmp eq i32 [[CONV673]], [[CONV674]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP675]], label [[COND_TRUE677:%.*]], label [[COND_FALSE679:%.*]]
// SIMD-ONLY0:       cond.true677:
// SIMD-ONLY0-NEXT:    [[TMP282:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV678:%.*]] = sext i8 [[TMP282]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END681:%.*]]
// SIMD-ONLY0:       cond.false679:
// SIMD-ONLY0-NEXT:    [[TMP283:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV680:%.*]] = sext i8 [[TMP283]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END681]]
// SIMD-ONLY0:       cond.end681:
// SIMD-ONLY0-NEXT:    [[COND682:%.*]] = phi i32 [ [[CONV678]], [[COND_TRUE677]] ], [ [[CONV680]], [[COND_FALSE679]] ]
// SIMD-ONLY0-NEXT:    [[CONV683:%.*]] = trunc i32 [[COND682]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV683]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP284:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV684:%.*]] = sext i8 [[TMP284]] to i32
// SIMD-ONLY0-NEXT:    [[TMP285:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV685:%.*]] = sext i8 [[TMP285]] to i32
// SIMD-ONLY0-NEXT:    [[CMP686:%.*]] = icmp eq i32 [[CONV684]], [[CONV685]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP686]], label [[COND_TRUE688:%.*]], label [[COND_FALSE690:%.*]]
// SIMD-ONLY0:       cond.true688:
// SIMD-ONLY0-NEXT:    [[TMP286:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV689:%.*]] = sext i8 [[TMP286]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END692:%.*]]
// SIMD-ONLY0:       cond.false690:
// SIMD-ONLY0-NEXT:    [[TMP287:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV691:%.*]] = sext i8 [[TMP287]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END692]]
// SIMD-ONLY0:       cond.end692:
// SIMD-ONLY0-NEXT:    [[COND693:%.*]] = phi i32 [ [[CONV689]], [[COND_TRUE688]] ], [ [[CONV691]], [[COND_FALSE690]] ]
// SIMD-ONLY0-NEXT:    [[CONV694:%.*]] = trunc i32 [[COND693]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV694]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP288:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV695:%.*]] = sext i8 [[TMP288]] to i32
// SIMD-ONLY0-NEXT:    [[TMP289:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV696:%.*]] = sext i8 [[TMP289]] to i32
// SIMD-ONLY0-NEXT:    [[CMP697:%.*]] = icmp eq i32 [[CONV695]], [[CONV696]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP697]], label [[IF_THEN699:%.*]], label [[IF_END700:%.*]]
// SIMD-ONLY0:       if.then699:
// SIMD-ONLY0-NEXT:    [[TMP290:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP290]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END700]]
// SIMD-ONLY0:       if.end700:
// SIMD-ONLY0-NEXT:    [[TMP291:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV701:%.*]] = sext i8 [[TMP291]] to i32
// SIMD-ONLY0-NEXT:    [[TMP292:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV702:%.*]] = sext i8 [[TMP292]] to i32
// SIMD-ONLY0-NEXT:    [[CMP703:%.*]] = icmp eq i32 [[CONV701]], [[CONV702]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP703]], label [[IF_THEN705:%.*]], label [[IF_END706:%.*]]
// SIMD-ONLY0:       if.then705:
// SIMD-ONLY0-NEXT:    [[TMP293:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP293]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END706]]
// SIMD-ONLY0:       if.end706:
// SIMD-ONLY0-NEXT:    [[TMP294:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV707:%.*]] = zext i8 [[TMP294]] to i32
// SIMD-ONLY0-NEXT:    [[TMP295:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV708:%.*]] = zext i8 [[TMP295]] to i32
// SIMD-ONLY0-NEXT:    [[CMP709:%.*]] = icmp sgt i32 [[CONV707]], [[CONV708]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP709]], label [[COND_TRUE711:%.*]], label [[COND_FALSE713:%.*]]
// SIMD-ONLY0:       cond.true711:
// SIMD-ONLY0-NEXT:    [[TMP296:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV712:%.*]] = zext i8 [[TMP296]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END715:%.*]]
// SIMD-ONLY0:       cond.false713:
// SIMD-ONLY0-NEXT:    [[TMP297:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV714:%.*]] = zext i8 [[TMP297]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END715]]
// SIMD-ONLY0:       cond.end715:
// SIMD-ONLY0-NEXT:    [[COND716:%.*]] = phi i32 [ [[CONV712]], [[COND_TRUE711]] ], [ [[CONV714]], [[COND_FALSE713]] ]
// SIMD-ONLY0-NEXT:    [[CONV717:%.*]] = trunc i32 [[COND716]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV717]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP298:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV718:%.*]] = zext i8 [[TMP298]] to i32
// SIMD-ONLY0-NEXT:    [[TMP299:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV719:%.*]] = zext i8 [[TMP299]] to i32
// SIMD-ONLY0-NEXT:    [[CMP720:%.*]] = icmp slt i32 [[CONV718]], [[CONV719]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP720]], label [[COND_TRUE722:%.*]], label [[COND_FALSE724:%.*]]
// SIMD-ONLY0:       cond.true722:
// SIMD-ONLY0-NEXT:    [[TMP300:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV723:%.*]] = zext i8 [[TMP300]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END726:%.*]]
// SIMD-ONLY0:       cond.false724:
// SIMD-ONLY0-NEXT:    [[TMP301:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV725:%.*]] = zext i8 [[TMP301]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END726]]
// SIMD-ONLY0:       cond.end726:
// SIMD-ONLY0-NEXT:    [[COND727:%.*]] = phi i32 [ [[CONV723]], [[COND_TRUE722]] ], [ [[CONV725]], [[COND_FALSE724]] ]
// SIMD-ONLY0-NEXT:    [[CONV728:%.*]] = trunc i32 [[COND727]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV728]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP302:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV729:%.*]] = zext i8 [[TMP302]] to i32
// SIMD-ONLY0-NEXT:    [[TMP303:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV730:%.*]] = zext i8 [[TMP303]] to i32
// SIMD-ONLY0-NEXT:    [[CMP731:%.*]] = icmp sgt i32 [[CONV729]], [[CONV730]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP731]], label [[COND_TRUE733:%.*]], label [[COND_FALSE735:%.*]]
// SIMD-ONLY0:       cond.true733:
// SIMD-ONLY0-NEXT:    [[TMP304:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV734:%.*]] = zext i8 [[TMP304]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END737:%.*]]
// SIMD-ONLY0:       cond.false735:
// SIMD-ONLY0-NEXT:    [[TMP305:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV736:%.*]] = zext i8 [[TMP305]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END737]]
// SIMD-ONLY0:       cond.end737:
// SIMD-ONLY0-NEXT:    [[COND738:%.*]] = phi i32 [ [[CONV734]], [[COND_TRUE733]] ], [ [[CONV736]], [[COND_FALSE735]] ]
// SIMD-ONLY0-NEXT:    [[CONV739:%.*]] = trunc i32 [[COND738]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV739]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP306:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV740:%.*]] = zext i8 [[TMP306]] to i32
// SIMD-ONLY0-NEXT:    [[TMP307:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV741:%.*]] = zext i8 [[TMP307]] to i32
// SIMD-ONLY0-NEXT:    [[CMP742:%.*]] = icmp slt i32 [[CONV740]], [[CONV741]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP742]], label [[COND_TRUE744:%.*]], label [[COND_FALSE746:%.*]]
// SIMD-ONLY0:       cond.true744:
// SIMD-ONLY0-NEXT:    [[TMP308:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV745:%.*]] = zext i8 [[TMP308]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END748:%.*]]
// SIMD-ONLY0:       cond.false746:
// SIMD-ONLY0-NEXT:    [[TMP309:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV747:%.*]] = zext i8 [[TMP309]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END748]]
// SIMD-ONLY0:       cond.end748:
// SIMD-ONLY0-NEXT:    [[COND749:%.*]] = phi i32 [ [[CONV745]], [[COND_TRUE744]] ], [ [[CONV747]], [[COND_FALSE746]] ]
// SIMD-ONLY0-NEXT:    [[CONV750:%.*]] = trunc i32 [[COND749]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV750]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP310:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV751:%.*]] = zext i8 [[TMP310]] to i32
// SIMD-ONLY0-NEXT:    [[TMP311:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV752:%.*]] = zext i8 [[TMP311]] to i32
// SIMD-ONLY0-NEXT:    [[CMP753:%.*]] = icmp sgt i32 [[CONV751]], [[CONV752]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP753]], label [[IF_THEN755:%.*]], label [[IF_END756:%.*]]
// SIMD-ONLY0:       if.then755:
// SIMD-ONLY0-NEXT:    [[TMP312:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP312]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END756]]
// SIMD-ONLY0:       if.end756:
// SIMD-ONLY0-NEXT:    [[TMP313:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV757:%.*]] = zext i8 [[TMP313]] to i32
// SIMD-ONLY0-NEXT:    [[TMP314:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV758:%.*]] = zext i8 [[TMP314]] to i32
// SIMD-ONLY0-NEXT:    [[CMP759:%.*]] = icmp slt i32 [[CONV757]], [[CONV758]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP759]], label [[IF_THEN761:%.*]], label [[IF_END762:%.*]]
// SIMD-ONLY0:       if.then761:
// SIMD-ONLY0-NEXT:    [[TMP315:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP315]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END762]]
// SIMD-ONLY0:       if.end762:
// SIMD-ONLY0-NEXT:    [[TMP316:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV763:%.*]] = zext i8 [[TMP316]] to i32
// SIMD-ONLY0-NEXT:    [[TMP317:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV764:%.*]] = zext i8 [[TMP317]] to i32
// SIMD-ONLY0-NEXT:    [[CMP765:%.*]] = icmp sgt i32 [[CONV763]], [[CONV764]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP765]], label [[IF_THEN767:%.*]], label [[IF_END768:%.*]]
// SIMD-ONLY0:       if.then767:
// SIMD-ONLY0-NEXT:    [[TMP318:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP318]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END768]]
// SIMD-ONLY0:       if.end768:
// SIMD-ONLY0-NEXT:    [[TMP319:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV769:%.*]] = zext i8 [[TMP319]] to i32
// SIMD-ONLY0-NEXT:    [[TMP320:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV770:%.*]] = zext i8 [[TMP320]] to i32
// SIMD-ONLY0-NEXT:    [[CMP771:%.*]] = icmp slt i32 [[CONV769]], [[CONV770]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP771]], label [[IF_THEN773:%.*]], label [[IF_END774:%.*]]
// SIMD-ONLY0:       if.then773:
// SIMD-ONLY0-NEXT:    [[TMP321:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP321]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END774]]
// SIMD-ONLY0:       if.end774:
// SIMD-ONLY0-NEXT:    [[TMP322:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV775:%.*]] = zext i8 [[TMP322]] to i32
// SIMD-ONLY0-NEXT:    [[TMP323:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV776:%.*]] = zext i8 [[TMP323]] to i32
// SIMD-ONLY0-NEXT:    [[CMP777:%.*]] = icmp eq i32 [[CONV775]], [[CONV776]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP777]], label [[COND_TRUE779:%.*]], label [[COND_FALSE781:%.*]]
// SIMD-ONLY0:       cond.true779:
// SIMD-ONLY0-NEXT:    [[TMP324:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV780:%.*]] = zext i8 [[TMP324]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END783:%.*]]
// SIMD-ONLY0:       cond.false781:
// SIMD-ONLY0-NEXT:    [[TMP325:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV782:%.*]] = zext i8 [[TMP325]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END783]]
// SIMD-ONLY0:       cond.end783:
// SIMD-ONLY0-NEXT:    [[COND784:%.*]] = phi i32 [ [[CONV780]], [[COND_TRUE779]] ], [ [[CONV782]], [[COND_FALSE781]] ]
// SIMD-ONLY0-NEXT:    [[CONV785:%.*]] = trunc i32 [[COND784]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV785]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP326:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV786:%.*]] = zext i8 [[TMP326]] to i32
// SIMD-ONLY0-NEXT:    [[TMP327:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV787:%.*]] = zext i8 [[TMP327]] to i32
// SIMD-ONLY0-NEXT:    [[CMP788:%.*]] = icmp eq i32 [[CONV786]], [[CONV787]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP788]], label [[COND_TRUE790:%.*]], label [[COND_FALSE792:%.*]]
// SIMD-ONLY0:       cond.true790:
// SIMD-ONLY0-NEXT:    [[TMP328:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV791:%.*]] = zext i8 [[TMP328]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END794:%.*]]
// SIMD-ONLY0:       cond.false792:
// SIMD-ONLY0-NEXT:    [[TMP329:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV793:%.*]] = zext i8 [[TMP329]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END794]]
// SIMD-ONLY0:       cond.end794:
// SIMD-ONLY0-NEXT:    [[COND795:%.*]] = phi i32 [ [[CONV791]], [[COND_TRUE790]] ], [ [[CONV793]], [[COND_FALSE792]] ]
// SIMD-ONLY0-NEXT:    [[CONV796:%.*]] = trunc i32 [[COND795]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV796]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP330:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV797:%.*]] = zext i8 [[TMP330]] to i32
// SIMD-ONLY0-NEXT:    [[TMP331:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV798:%.*]] = zext i8 [[TMP331]] to i32
// SIMD-ONLY0-NEXT:    [[CMP799:%.*]] = icmp eq i32 [[CONV797]], [[CONV798]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP799]], label [[IF_THEN801:%.*]], label [[IF_END802:%.*]]
// SIMD-ONLY0:       if.then801:
// SIMD-ONLY0-NEXT:    [[TMP332:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP332]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END802]]
// SIMD-ONLY0:       if.end802:
// SIMD-ONLY0-NEXT:    [[TMP333:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV803:%.*]] = zext i8 [[TMP333]] to i32
// SIMD-ONLY0-NEXT:    [[TMP334:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV804:%.*]] = zext i8 [[TMP334]] to i32
// SIMD-ONLY0-NEXT:    [[CMP805:%.*]] = icmp eq i32 [[CONV803]], [[CONV804]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP805]], label [[IF_THEN807:%.*]], label [[IF_END808:%.*]]
// SIMD-ONLY0:       if.then807:
// SIMD-ONLY0-NEXT:    [[TMP335:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP335]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END808]]
// SIMD-ONLY0:       if.end808:
// SIMD-ONLY0-NEXT:    [[TMP336:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV809:%.*]] = sext i8 [[TMP336]] to i32
// SIMD-ONLY0-NEXT:    [[TMP337:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV810:%.*]] = sext i8 [[TMP337]] to i32
// SIMD-ONLY0-NEXT:    [[CMP811:%.*]] = icmp sgt i32 [[CONV809]], [[CONV810]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP811]], label [[COND_TRUE813:%.*]], label [[COND_FALSE815:%.*]]
// SIMD-ONLY0:       cond.true813:
// SIMD-ONLY0-NEXT:    [[TMP338:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV814:%.*]] = sext i8 [[TMP338]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END817:%.*]]
// SIMD-ONLY0:       cond.false815:
// SIMD-ONLY0-NEXT:    [[TMP339:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV816:%.*]] = sext i8 [[TMP339]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END817]]
// SIMD-ONLY0:       cond.end817:
// SIMD-ONLY0-NEXT:    [[COND818:%.*]] = phi i32 [ [[CONV814]], [[COND_TRUE813]] ], [ [[CONV816]], [[COND_FALSE815]] ]
// SIMD-ONLY0-NEXT:    [[CONV819:%.*]] = trunc i32 [[COND818]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV819]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP340:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV820:%.*]] = sext i8 [[TMP340]] to i32
// SIMD-ONLY0-NEXT:    [[TMP341:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV821:%.*]] = sext i8 [[TMP341]] to i32
// SIMD-ONLY0-NEXT:    [[CMP822:%.*]] = icmp slt i32 [[CONV820]], [[CONV821]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP822]], label [[COND_TRUE824:%.*]], label [[COND_FALSE826:%.*]]
// SIMD-ONLY0:       cond.true824:
// SIMD-ONLY0-NEXT:    [[TMP342:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV825:%.*]] = sext i8 [[TMP342]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END828:%.*]]
// SIMD-ONLY0:       cond.false826:
// SIMD-ONLY0-NEXT:    [[TMP343:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV827:%.*]] = sext i8 [[TMP343]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END828]]
// SIMD-ONLY0:       cond.end828:
// SIMD-ONLY0-NEXT:    [[COND829:%.*]] = phi i32 [ [[CONV825]], [[COND_TRUE824]] ], [ [[CONV827]], [[COND_FALSE826]] ]
// SIMD-ONLY0-NEXT:    [[CONV830:%.*]] = trunc i32 [[COND829]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV830]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP344:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV831:%.*]] = sext i8 [[TMP344]] to i32
// SIMD-ONLY0-NEXT:    [[TMP345:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV832:%.*]] = sext i8 [[TMP345]] to i32
// SIMD-ONLY0-NEXT:    [[CMP833:%.*]] = icmp sgt i32 [[CONV831]], [[CONV832]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP833]], label [[COND_TRUE835:%.*]], label [[COND_FALSE837:%.*]]
// SIMD-ONLY0:       cond.true835:
// SIMD-ONLY0-NEXT:    [[TMP346:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV836:%.*]] = sext i8 [[TMP346]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END839:%.*]]
// SIMD-ONLY0:       cond.false837:
// SIMD-ONLY0-NEXT:    [[TMP347:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV838:%.*]] = sext i8 [[TMP347]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END839]]
// SIMD-ONLY0:       cond.end839:
// SIMD-ONLY0-NEXT:    [[COND840:%.*]] = phi i32 [ [[CONV836]], [[COND_TRUE835]] ], [ [[CONV838]], [[COND_FALSE837]] ]
// SIMD-ONLY0-NEXT:    [[CONV841:%.*]] = trunc i32 [[COND840]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV841]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP348:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV842:%.*]] = sext i8 [[TMP348]] to i32
// SIMD-ONLY0-NEXT:    [[TMP349:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV843:%.*]] = sext i8 [[TMP349]] to i32
// SIMD-ONLY0-NEXT:    [[CMP844:%.*]] = icmp slt i32 [[CONV842]], [[CONV843]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP844]], label [[COND_TRUE846:%.*]], label [[COND_FALSE848:%.*]]
// SIMD-ONLY0:       cond.true846:
// SIMD-ONLY0-NEXT:    [[TMP350:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV847:%.*]] = sext i8 [[TMP350]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END850:%.*]]
// SIMD-ONLY0:       cond.false848:
// SIMD-ONLY0-NEXT:    [[TMP351:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV849:%.*]] = sext i8 [[TMP351]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END850]]
// SIMD-ONLY0:       cond.end850:
// SIMD-ONLY0-NEXT:    [[COND851:%.*]] = phi i32 [ [[CONV847]], [[COND_TRUE846]] ], [ [[CONV849]], [[COND_FALSE848]] ]
// SIMD-ONLY0-NEXT:    [[CONV852:%.*]] = trunc i32 [[COND851]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV852]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP352:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV853:%.*]] = sext i8 [[TMP352]] to i32
// SIMD-ONLY0-NEXT:    [[TMP353:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV854:%.*]] = sext i8 [[TMP353]] to i32
// SIMD-ONLY0-NEXT:    [[CMP855:%.*]] = icmp sgt i32 [[CONV853]], [[CONV854]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP855]], label [[IF_THEN857:%.*]], label [[IF_END858:%.*]]
// SIMD-ONLY0:       if.then857:
// SIMD-ONLY0-NEXT:    [[TMP354:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP354]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END858]]
// SIMD-ONLY0:       if.end858:
// SIMD-ONLY0-NEXT:    [[TMP355:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV859:%.*]] = sext i8 [[TMP355]] to i32
// SIMD-ONLY0-NEXT:    [[TMP356:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV860:%.*]] = sext i8 [[TMP356]] to i32
// SIMD-ONLY0-NEXT:    [[CMP861:%.*]] = icmp slt i32 [[CONV859]], [[CONV860]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP861]], label [[IF_THEN863:%.*]], label [[IF_END864:%.*]]
// SIMD-ONLY0:       if.then863:
// SIMD-ONLY0-NEXT:    [[TMP357:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP357]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END864]]
// SIMD-ONLY0:       if.end864:
// SIMD-ONLY0-NEXT:    [[TMP358:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV865:%.*]] = sext i8 [[TMP358]] to i32
// SIMD-ONLY0-NEXT:    [[TMP359:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV866:%.*]] = sext i8 [[TMP359]] to i32
// SIMD-ONLY0-NEXT:    [[CMP867:%.*]] = icmp sgt i32 [[CONV865]], [[CONV866]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP867]], label [[IF_THEN869:%.*]], label [[IF_END870:%.*]]
// SIMD-ONLY0:       if.then869:
// SIMD-ONLY0-NEXT:    [[TMP360:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP360]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END870]]
// SIMD-ONLY0:       if.end870:
// SIMD-ONLY0-NEXT:    [[TMP361:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV871:%.*]] = sext i8 [[TMP361]] to i32
// SIMD-ONLY0-NEXT:    [[TMP362:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV872:%.*]] = sext i8 [[TMP362]] to i32
// SIMD-ONLY0-NEXT:    [[CMP873:%.*]] = icmp slt i32 [[CONV871]], [[CONV872]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP873]], label [[IF_THEN875:%.*]], label [[IF_END876:%.*]]
// SIMD-ONLY0:       if.then875:
// SIMD-ONLY0-NEXT:    [[TMP363:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP363]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END876]]
// SIMD-ONLY0:       if.end876:
// SIMD-ONLY0-NEXT:    [[TMP364:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV877:%.*]] = sext i8 [[TMP364]] to i32
// SIMD-ONLY0-NEXT:    [[TMP365:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV878:%.*]] = sext i8 [[TMP365]] to i32
// SIMD-ONLY0-NEXT:    [[CMP879:%.*]] = icmp eq i32 [[CONV877]], [[CONV878]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP879]], label [[COND_TRUE881:%.*]], label [[COND_FALSE883:%.*]]
// SIMD-ONLY0:       cond.true881:
// SIMD-ONLY0-NEXT:    [[TMP366:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV882:%.*]] = sext i8 [[TMP366]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END885:%.*]]
// SIMD-ONLY0:       cond.false883:
// SIMD-ONLY0-NEXT:    [[TMP367:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV884:%.*]] = sext i8 [[TMP367]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END885]]
// SIMD-ONLY0:       cond.end885:
// SIMD-ONLY0-NEXT:    [[COND886:%.*]] = phi i32 [ [[CONV882]], [[COND_TRUE881]] ], [ [[CONV884]], [[COND_FALSE883]] ]
// SIMD-ONLY0-NEXT:    [[CONV887:%.*]] = trunc i32 [[COND886]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV887]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP368:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV888:%.*]] = sext i8 [[TMP368]] to i32
// SIMD-ONLY0-NEXT:    [[TMP369:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV889:%.*]] = sext i8 [[TMP369]] to i32
// SIMD-ONLY0-NEXT:    [[CMP890:%.*]] = icmp eq i32 [[CONV888]], [[CONV889]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP890]], label [[COND_TRUE892:%.*]], label [[COND_FALSE894:%.*]]
// SIMD-ONLY0:       cond.true892:
// SIMD-ONLY0-NEXT:    [[TMP370:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV893:%.*]] = sext i8 [[TMP370]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END896:%.*]]
// SIMD-ONLY0:       cond.false894:
// SIMD-ONLY0-NEXT:    [[TMP371:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV895:%.*]] = sext i8 [[TMP371]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END896]]
// SIMD-ONLY0:       cond.end896:
// SIMD-ONLY0-NEXT:    [[COND897:%.*]] = phi i32 [ [[CONV893]], [[COND_TRUE892]] ], [ [[CONV895]], [[COND_FALSE894]] ]
// SIMD-ONLY0-NEXT:    [[CONV898:%.*]] = trunc i32 [[COND897]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV898]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP372:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV899:%.*]] = sext i8 [[TMP372]] to i32
// SIMD-ONLY0-NEXT:    [[TMP373:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV900:%.*]] = sext i8 [[TMP373]] to i32
// SIMD-ONLY0-NEXT:    [[CMP901:%.*]] = icmp eq i32 [[CONV899]], [[CONV900]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP901]], label [[IF_THEN903:%.*]], label [[IF_END904:%.*]]
// SIMD-ONLY0:       if.then903:
// SIMD-ONLY0-NEXT:    [[TMP374:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP374]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END904]]
// SIMD-ONLY0:       if.end904:
// SIMD-ONLY0-NEXT:    [[TMP375:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV905:%.*]] = sext i8 [[TMP375]] to i32
// SIMD-ONLY0-NEXT:    [[TMP376:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV906:%.*]] = sext i8 [[TMP376]] to i32
// SIMD-ONLY0-NEXT:    [[CMP907:%.*]] = icmp eq i32 [[CONV905]], [[CONV906]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP907]], label [[IF_THEN909:%.*]], label [[IF_END910:%.*]]
// SIMD-ONLY0:       if.then909:
// SIMD-ONLY0-NEXT:    [[TMP377:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP377]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END910]]
// SIMD-ONLY0:       if.end910:
// SIMD-ONLY0-NEXT:    [[TMP378:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV911:%.*]] = zext i8 [[TMP378]] to i32
// SIMD-ONLY0-NEXT:    [[TMP379:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV912:%.*]] = zext i8 [[TMP379]] to i32
// SIMD-ONLY0-NEXT:    [[CMP913:%.*]] = icmp sgt i32 [[CONV911]], [[CONV912]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP913]], label [[COND_TRUE915:%.*]], label [[COND_FALSE917:%.*]]
// SIMD-ONLY0:       cond.true915:
// SIMD-ONLY0-NEXT:    [[TMP380:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV916:%.*]] = zext i8 [[TMP380]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END919:%.*]]
// SIMD-ONLY0:       cond.false917:
// SIMD-ONLY0-NEXT:    [[TMP381:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV918:%.*]] = zext i8 [[TMP381]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END919]]
// SIMD-ONLY0:       cond.end919:
// SIMD-ONLY0-NEXT:    [[COND920:%.*]] = phi i32 [ [[CONV916]], [[COND_TRUE915]] ], [ [[CONV918]], [[COND_FALSE917]] ]
// SIMD-ONLY0-NEXT:    [[CONV921:%.*]] = trunc i32 [[COND920]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV921]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP382:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV922:%.*]] = zext i8 [[TMP382]] to i32
// SIMD-ONLY0-NEXT:    [[TMP383:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV923:%.*]] = zext i8 [[TMP383]] to i32
// SIMD-ONLY0-NEXT:    [[CMP924:%.*]] = icmp slt i32 [[CONV922]], [[CONV923]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP924]], label [[COND_TRUE926:%.*]], label [[COND_FALSE928:%.*]]
// SIMD-ONLY0:       cond.true926:
// SIMD-ONLY0-NEXT:    [[TMP384:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV927:%.*]] = zext i8 [[TMP384]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END930:%.*]]
// SIMD-ONLY0:       cond.false928:
// SIMD-ONLY0-NEXT:    [[TMP385:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV929:%.*]] = zext i8 [[TMP385]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END930]]
// SIMD-ONLY0:       cond.end930:
// SIMD-ONLY0-NEXT:    [[COND931:%.*]] = phi i32 [ [[CONV927]], [[COND_TRUE926]] ], [ [[CONV929]], [[COND_FALSE928]] ]
// SIMD-ONLY0-NEXT:    [[CONV932:%.*]] = trunc i32 [[COND931]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV932]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP386:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV933:%.*]] = zext i8 [[TMP386]] to i32
// SIMD-ONLY0-NEXT:    [[TMP387:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV934:%.*]] = zext i8 [[TMP387]] to i32
// SIMD-ONLY0-NEXT:    [[CMP935:%.*]] = icmp sgt i32 [[CONV933]], [[CONV934]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP935]], label [[COND_TRUE937:%.*]], label [[COND_FALSE939:%.*]]
// SIMD-ONLY0:       cond.true937:
// SIMD-ONLY0-NEXT:    [[TMP388:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV938:%.*]] = zext i8 [[TMP388]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END941:%.*]]
// SIMD-ONLY0:       cond.false939:
// SIMD-ONLY0-NEXT:    [[TMP389:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV940:%.*]] = zext i8 [[TMP389]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END941]]
// SIMD-ONLY0:       cond.end941:
// SIMD-ONLY0-NEXT:    [[COND942:%.*]] = phi i32 [ [[CONV938]], [[COND_TRUE937]] ], [ [[CONV940]], [[COND_FALSE939]] ]
// SIMD-ONLY0-NEXT:    [[CONV943:%.*]] = trunc i32 [[COND942]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV943]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP390:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV944:%.*]] = zext i8 [[TMP390]] to i32
// SIMD-ONLY0-NEXT:    [[TMP391:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV945:%.*]] = zext i8 [[TMP391]] to i32
// SIMD-ONLY0-NEXT:    [[CMP946:%.*]] = icmp slt i32 [[CONV944]], [[CONV945]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP946]], label [[COND_TRUE948:%.*]], label [[COND_FALSE950:%.*]]
// SIMD-ONLY0:       cond.true948:
// SIMD-ONLY0-NEXT:    [[TMP392:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV949:%.*]] = zext i8 [[TMP392]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END952:%.*]]
// SIMD-ONLY0:       cond.false950:
// SIMD-ONLY0-NEXT:    [[TMP393:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV951:%.*]] = zext i8 [[TMP393]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END952]]
// SIMD-ONLY0:       cond.end952:
// SIMD-ONLY0-NEXT:    [[COND953:%.*]] = phi i32 [ [[CONV949]], [[COND_TRUE948]] ], [ [[CONV951]], [[COND_FALSE950]] ]
// SIMD-ONLY0-NEXT:    [[CONV954:%.*]] = trunc i32 [[COND953]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV954]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP394:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV955:%.*]] = zext i8 [[TMP394]] to i32
// SIMD-ONLY0-NEXT:    [[TMP395:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV956:%.*]] = zext i8 [[TMP395]] to i32
// SIMD-ONLY0-NEXT:    [[CMP957:%.*]] = icmp sgt i32 [[CONV955]], [[CONV956]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP957]], label [[IF_THEN959:%.*]], label [[IF_END960:%.*]]
// SIMD-ONLY0:       if.then959:
// SIMD-ONLY0-NEXT:    [[TMP396:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP396]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END960]]
// SIMD-ONLY0:       if.end960:
// SIMD-ONLY0-NEXT:    [[TMP397:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV961:%.*]] = zext i8 [[TMP397]] to i32
// SIMD-ONLY0-NEXT:    [[TMP398:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV962:%.*]] = zext i8 [[TMP398]] to i32
// SIMD-ONLY0-NEXT:    [[CMP963:%.*]] = icmp slt i32 [[CONV961]], [[CONV962]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP963]], label [[IF_THEN965:%.*]], label [[IF_END966:%.*]]
// SIMD-ONLY0:       if.then965:
// SIMD-ONLY0-NEXT:    [[TMP399:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP399]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END966]]
// SIMD-ONLY0:       if.end966:
// SIMD-ONLY0-NEXT:    [[TMP400:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV967:%.*]] = zext i8 [[TMP400]] to i32
// SIMD-ONLY0-NEXT:    [[TMP401:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV968:%.*]] = zext i8 [[TMP401]] to i32
// SIMD-ONLY0-NEXT:    [[CMP969:%.*]] = icmp sgt i32 [[CONV967]], [[CONV968]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP969]], label [[IF_THEN971:%.*]], label [[IF_END972:%.*]]
// SIMD-ONLY0:       if.then971:
// SIMD-ONLY0-NEXT:    [[TMP402:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP402]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END972]]
// SIMD-ONLY0:       if.end972:
// SIMD-ONLY0-NEXT:    [[TMP403:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV973:%.*]] = zext i8 [[TMP403]] to i32
// SIMD-ONLY0-NEXT:    [[TMP404:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV974:%.*]] = zext i8 [[TMP404]] to i32
// SIMD-ONLY0-NEXT:    [[CMP975:%.*]] = icmp slt i32 [[CONV973]], [[CONV974]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP975]], label [[IF_THEN977:%.*]], label [[IF_END978:%.*]]
// SIMD-ONLY0:       if.then977:
// SIMD-ONLY0-NEXT:    [[TMP405:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP405]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END978]]
// SIMD-ONLY0:       if.end978:
// SIMD-ONLY0-NEXT:    [[TMP406:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV979:%.*]] = zext i8 [[TMP406]] to i32
// SIMD-ONLY0-NEXT:    [[TMP407:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV980:%.*]] = zext i8 [[TMP407]] to i32
// SIMD-ONLY0-NEXT:    [[CMP981:%.*]] = icmp eq i32 [[CONV979]], [[CONV980]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP981]], label [[COND_TRUE983:%.*]], label [[COND_FALSE985:%.*]]
// SIMD-ONLY0:       cond.true983:
// SIMD-ONLY0-NEXT:    [[TMP408:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV984:%.*]] = zext i8 [[TMP408]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END987:%.*]]
// SIMD-ONLY0:       cond.false985:
// SIMD-ONLY0-NEXT:    [[TMP409:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV986:%.*]] = zext i8 [[TMP409]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END987]]
// SIMD-ONLY0:       cond.end987:
// SIMD-ONLY0-NEXT:    [[COND988:%.*]] = phi i32 [ [[CONV984]], [[COND_TRUE983]] ], [ [[CONV986]], [[COND_FALSE985]] ]
// SIMD-ONLY0-NEXT:    [[CONV989:%.*]] = trunc i32 [[COND988]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV989]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP410:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV990:%.*]] = zext i8 [[TMP410]] to i32
// SIMD-ONLY0-NEXT:    [[TMP411:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV991:%.*]] = zext i8 [[TMP411]] to i32
// SIMD-ONLY0-NEXT:    [[CMP992:%.*]] = icmp eq i32 [[CONV990]], [[CONV991]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP992]], label [[COND_TRUE994:%.*]], label [[COND_FALSE996:%.*]]
// SIMD-ONLY0:       cond.true994:
// SIMD-ONLY0-NEXT:    [[TMP412:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV995:%.*]] = zext i8 [[TMP412]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END998:%.*]]
// SIMD-ONLY0:       cond.false996:
// SIMD-ONLY0-NEXT:    [[TMP413:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV997:%.*]] = zext i8 [[TMP413]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END998]]
// SIMD-ONLY0:       cond.end998:
// SIMD-ONLY0-NEXT:    [[COND999:%.*]] = phi i32 [ [[CONV995]], [[COND_TRUE994]] ], [ [[CONV997]], [[COND_FALSE996]] ]
// SIMD-ONLY0-NEXT:    [[CONV1000:%.*]] = trunc i32 [[COND999]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1000]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP414:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1001:%.*]] = zext i8 [[TMP414]] to i32
// SIMD-ONLY0-NEXT:    [[TMP415:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1002:%.*]] = zext i8 [[TMP415]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1003:%.*]] = icmp eq i32 [[CONV1001]], [[CONV1002]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1003]], label [[IF_THEN1005:%.*]], label [[IF_END1006:%.*]]
// SIMD-ONLY0:       if.then1005:
// SIMD-ONLY0-NEXT:    [[TMP416:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP416]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1006]]
// SIMD-ONLY0:       if.end1006:
// SIMD-ONLY0-NEXT:    [[TMP417:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1007:%.*]] = zext i8 [[TMP417]] to i32
// SIMD-ONLY0-NEXT:    [[TMP418:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1008:%.*]] = zext i8 [[TMP418]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1009:%.*]] = icmp eq i32 [[CONV1007]], [[CONV1008]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1009]], label [[IF_THEN1011:%.*]], label [[IF_END1012:%.*]]
// SIMD-ONLY0:       if.then1011:
// SIMD-ONLY0-NEXT:    [[TMP419:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP419]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1012]]
// SIMD-ONLY0:       if.end1012:
// SIMD-ONLY0-NEXT:    [[TMP420:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1013:%.*]] = sext i8 [[TMP420]] to i32
// SIMD-ONLY0-NEXT:    [[TMP421:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1014:%.*]] = sext i8 [[TMP421]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1015:%.*]] = icmp sgt i32 [[CONV1013]], [[CONV1014]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1015]], label [[COND_TRUE1017:%.*]], label [[COND_FALSE1019:%.*]]
// SIMD-ONLY0:       cond.true1017:
// SIMD-ONLY0-NEXT:    [[TMP422:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1018:%.*]] = sext i8 [[TMP422]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1021:%.*]]
// SIMD-ONLY0:       cond.false1019:
// SIMD-ONLY0-NEXT:    [[TMP423:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1020:%.*]] = sext i8 [[TMP423]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1021]]
// SIMD-ONLY0:       cond.end1021:
// SIMD-ONLY0-NEXT:    [[COND1022:%.*]] = phi i32 [ [[CONV1018]], [[COND_TRUE1017]] ], [ [[CONV1020]], [[COND_FALSE1019]] ]
// SIMD-ONLY0-NEXT:    [[CONV1023:%.*]] = trunc i32 [[COND1022]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1023]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP424:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1024:%.*]] = sext i8 [[TMP424]] to i32
// SIMD-ONLY0-NEXT:    [[TMP425:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1025:%.*]] = sext i8 [[TMP425]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1026:%.*]] = icmp slt i32 [[CONV1024]], [[CONV1025]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1026]], label [[COND_TRUE1028:%.*]], label [[COND_FALSE1030:%.*]]
// SIMD-ONLY0:       cond.true1028:
// SIMD-ONLY0-NEXT:    [[TMP426:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1029:%.*]] = sext i8 [[TMP426]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1032:%.*]]
// SIMD-ONLY0:       cond.false1030:
// SIMD-ONLY0-NEXT:    [[TMP427:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1031:%.*]] = sext i8 [[TMP427]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1032]]
// SIMD-ONLY0:       cond.end1032:
// SIMD-ONLY0-NEXT:    [[COND1033:%.*]] = phi i32 [ [[CONV1029]], [[COND_TRUE1028]] ], [ [[CONV1031]], [[COND_FALSE1030]] ]
// SIMD-ONLY0-NEXT:    [[CONV1034:%.*]] = trunc i32 [[COND1033]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1034]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP428:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1035:%.*]] = sext i8 [[TMP428]] to i32
// SIMD-ONLY0-NEXT:    [[TMP429:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1036:%.*]] = sext i8 [[TMP429]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1037:%.*]] = icmp sgt i32 [[CONV1035]], [[CONV1036]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1037]], label [[COND_TRUE1039:%.*]], label [[COND_FALSE1041:%.*]]
// SIMD-ONLY0:       cond.true1039:
// SIMD-ONLY0-NEXT:    [[TMP430:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1040:%.*]] = sext i8 [[TMP430]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1043:%.*]]
// SIMD-ONLY0:       cond.false1041:
// SIMD-ONLY0-NEXT:    [[TMP431:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1042:%.*]] = sext i8 [[TMP431]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1043]]
// SIMD-ONLY0:       cond.end1043:
// SIMD-ONLY0-NEXT:    [[COND1044:%.*]] = phi i32 [ [[CONV1040]], [[COND_TRUE1039]] ], [ [[CONV1042]], [[COND_FALSE1041]] ]
// SIMD-ONLY0-NEXT:    [[CONV1045:%.*]] = trunc i32 [[COND1044]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1045]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP432:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1046:%.*]] = sext i8 [[TMP432]] to i32
// SIMD-ONLY0-NEXT:    [[TMP433:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1047:%.*]] = sext i8 [[TMP433]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1048:%.*]] = icmp slt i32 [[CONV1046]], [[CONV1047]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1048]], label [[COND_TRUE1050:%.*]], label [[COND_FALSE1052:%.*]]
// SIMD-ONLY0:       cond.true1050:
// SIMD-ONLY0-NEXT:    [[TMP434:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1051:%.*]] = sext i8 [[TMP434]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1054:%.*]]
// SIMD-ONLY0:       cond.false1052:
// SIMD-ONLY0-NEXT:    [[TMP435:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1053:%.*]] = sext i8 [[TMP435]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1054]]
// SIMD-ONLY0:       cond.end1054:
// SIMD-ONLY0-NEXT:    [[COND1055:%.*]] = phi i32 [ [[CONV1051]], [[COND_TRUE1050]] ], [ [[CONV1053]], [[COND_FALSE1052]] ]
// SIMD-ONLY0-NEXT:    [[CONV1056:%.*]] = trunc i32 [[COND1055]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1056]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP436:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1057:%.*]] = sext i8 [[TMP436]] to i32
// SIMD-ONLY0-NEXT:    [[TMP437:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1058:%.*]] = sext i8 [[TMP437]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1059:%.*]] = icmp sgt i32 [[CONV1057]], [[CONV1058]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1059]], label [[IF_THEN1061:%.*]], label [[IF_END1062:%.*]]
// SIMD-ONLY0:       if.then1061:
// SIMD-ONLY0-NEXT:    [[TMP438:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP438]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1062]]
// SIMD-ONLY0:       if.end1062:
// SIMD-ONLY0-NEXT:    [[TMP439:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1063:%.*]] = sext i8 [[TMP439]] to i32
// SIMD-ONLY0-NEXT:    [[TMP440:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1064:%.*]] = sext i8 [[TMP440]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1065:%.*]] = icmp slt i32 [[CONV1063]], [[CONV1064]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1065]], label [[IF_THEN1067:%.*]], label [[IF_END1068:%.*]]
// SIMD-ONLY0:       if.then1067:
// SIMD-ONLY0-NEXT:    [[TMP441:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP441]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1068]]
// SIMD-ONLY0:       if.end1068:
// SIMD-ONLY0-NEXT:    [[TMP442:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1069:%.*]] = sext i8 [[TMP442]] to i32
// SIMD-ONLY0-NEXT:    [[TMP443:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1070:%.*]] = sext i8 [[TMP443]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1071:%.*]] = icmp sgt i32 [[CONV1069]], [[CONV1070]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1071]], label [[IF_THEN1073:%.*]], label [[IF_END1074:%.*]]
// SIMD-ONLY0:       if.then1073:
// SIMD-ONLY0-NEXT:    [[TMP444:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP444]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1074]]
// SIMD-ONLY0:       if.end1074:
// SIMD-ONLY0-NEXT:    [[TMP445:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1075:%.*]] = sext i8 [[TMP445]] to i32
// SIMD-ONLY0-NEXT:    [[TMP446:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1076:%.*]] = sext i8 [[TMP446]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1077:%.*]] = icmp slt i32 [[CONV1075]], [[CONV1076]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1077]], label [[IF_THEN1079:%.*]], label [[IF_END1080:%.*]]
// SIMD-ONLY0:       if.then1079:
// SIMD-ONLY0-NEXT:    [[TMP447:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP447]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1080]]
// SIMD-ONLY0:       if.end1080:
// SIMD-ONLY0-NEXT:    [[TMP448:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1081:%.*]] = sext i8 [[TMP448]] to i32
// SIMD-ONLY0-NEXT:    [[TMP449:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1082:%.*]] = sext i8 [[TMP449]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1083:%.*]] = icmp eq i32 [[CONV1081]], [[CONV1082]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1083]], label [[COND_TRUE1085:%.*]], label [[COND_FALSE1087:%.*]]
// SIMD-ONLY0:       cond.true1085:
// SIMD-ONLY0-NEXT:    [[TMP450:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1086:%.*]] = sext i8 [[TMP450]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1089:%.*]]
// SIMD-ONLY0:       cond.false1087:
// SIMD-ONLY0-NEXT:    [[TMP451:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1088:%.*]] = sext i8 [[TMP451]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1089]]
// SIMD-ONLY0:       cond.end1089:
// SIMD-ONLY0-NEXT:    [[COND1090:%.*]] = phi i32 [ [[CONV1086]], [[COND_TRUE1085]] ], [ [[CONV1088]], [[COND_FALSE1087]] ]
// SIMD-ONLY0-NEXT:    [[CONV1091:%.*]] = trunc i32 [[COND1090]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1091]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP452:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1092:%.*]] = sext i8 [[TMP452]] to i32
// SIMD-ONLY0-NEXT:    [[TMP453:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1093:%.*]] = sext i8 [[TMP453]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1094:%.*]] = icmp eq i32 [[CONV1092]], [[CONV1093]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1094]], label [[COND_TRUE1096:%.*]], label [[COND_FALSE1098:%.*]]
// SIMD-ONLY0:       cond.true1096:
// SIMD-ONLY0-NEXT:    [[TMP454:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1097:%.*]] = sext i8 [[TMP454]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1100:%.*]]
// SIMD-ONLY0:       cond.false1098:
// SIMD-ONLY0-NEXT:    [[TMP455:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1099:%.*]] = sext i8 [[TMP455]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1100]]
// SIMD-ONLY0:       cond.end1100:
// SIMD-ONLY0-NEXT:    [[COND1101:%.*]] = phi i32 [ [[CONV1097]], [[COND_TRUE1096]] ], [ [[CONV1099]], [[COND_FALSE1098]] ]
// SIMD-ONLY0-NEXT:    [[CONV1102:%.*]] = trunc i32 [[COND1101]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1102]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP456:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1103:%.*]] = sext i8 [[TMP456]] to i32
// SIMD-ONLY0-NEXT:    [[TMP457:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1104:%.*]] = sext i8 [[TMP457]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1105:%.*]] = icmp eq i32 [[CONV1103]], [[CONV1104]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1105]], label [[IF_THEN1107:%.*]], label [[IF_END1108:%.*]]
// SIMD-ONLY0:       if.then1107:
// SIMD-ONLY0-NEXT:    [[TMP458:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP458]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1108]]
// SIMD-ONLY0:       if.end1108:
// SIMD-ONLY0-NEXT:    [[TMP459:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1109:%.*]] = sext i8 [[TMP459]] to i32
// SIMD-ONLY0-NEXT:    [[TMP460:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1110:%.*]] = sext i8 [[TMP460]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1111:%.*]] = icmp eq i32 [[CONV1109]], [[CONV1110]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1111]], label [[IF_THEN1113:%.*]], label [[IF_END1114:%.*]]
// SIMD-ONLY0:       if.then1113:
// SIMD-ONLY0-NEXT:    [[TMP461:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP461]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1114]]
// SIMD-ONLY0:       if.end1114:
// SIMD-ONLY0-NEXT:    [[TMP462:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1115:%.*]] = zext i8 [[TMP462]] to i32
// SIMD-ONLY0-NEXT:    [[TMP463:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1116:%.*]] = zext i8 [[TMP463]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1117:%.*]] = icmp sgt i32 [[CONV1115]], [[CONV1116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1117]], label [[COND_TRUE1119:%.*]], label [[COND_FALSE1121:%.*]]
// SIMD-ONLY0:       cond.true1119:
// SIMD-ONLY0-NEXT:    [[TMP464:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1120:%.*]] = zext i8 [[TMP464]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1123:%.*]]
// SIMD-ONLY0:       cond.false1121:
// SIMD-ONLY0-NEXT:    [[TMP465:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1122:%.*]] = zext i8 [[TMP465]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1123]]
// SIMD-ONLY0:       cond.end1123:
// SIMD-ONLY0-NEXT:    [[COND1124:%.*]] = phi i32 [ [[CONV1120]], [[COND_TRUE1119]] ], [ [[CONV1122]], [[COND_FALSE1121]] ]
// SIMD-ONLY0-NEXT:    [[CONV1125:%.*]] = trunc i32 [[COND1124]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1125]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP466:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1126:%.*]] = zext i8 [[TMP466]] to i32
// SIMD-ONLY0-NEXT:    [[TMP467:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1127:%.*]] = zext i8 [[TMP467]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1128:%.*]] = icmp slt i32 [[CONV1126]], [[CONV1127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1128]], label [[COND_TRUE1130:%.*]], label [[COND_FALSE1132:%.*]]
// SIMD-ONLY0:       cond.true1130:
// SIMD-ONLY0-NEXT:    [[TMP468:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1131:%.*]] = zext i8 [[TMP468]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1134:%.*]]
// SIMD-ONLY0:       cond.false1132:
// SIMD-ONLY0-NEXT:    [[TMP469:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1133:%.*]] = zext i8 [[TMP469]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1134]]
// SIMD-ONLY0:       cond.end1134:
// SIMD-ONLY0-NEXT:    [[COND1135:%.*]] = phi i32 [ [[CONV1131]], [[COND_TRUE1130]] ], [ [[CONV1133]], [[COND_FALSE1132]] ]
// SIMD-ONLY0-NEXT:    [[CONV1136:%.*]] = trunc i32 [[COND1135]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1136]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP470:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1137:%.*]] = zext i8 [[TMP470]] to i32
// SIMD-ONLY0-NEXT:    [[TMP471:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1138:%.*]] = zext i8 [[TMP471]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1139:%.*]] = icmp sgt i32 [[CONV1137]], [[CONV1138]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1139]], label [[COND_TRUE1141:%.*]], label [[COND_FALSE1143:%.*]]
// SIMD-ONLY0:       cond.true1141:
// SIMD-ONLY0-NEXT:    [[TMP472:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1142:%.*]] = zext i8 [[TMP472]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1145:%.*]]
// SIMD-ONLY0:       cond.false1143:
// SIMD-ONLY0-NEXT:    [[TMP473:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1144:%.*]] = zext i8 [[TMP473]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1145]]
// SIMD-ONLY0:       cond.end1145:
// SIMD-ONLY0-NEXT:    [[COND1146:%.*]] = phi i32 [ [[CONV1142]], [[COND_TRUE1141]] ], [ [[CONV1144]], [[COND_FALSE1143]] ]
// SIMD-ONLY0-NEXT:    [[CONV1147:%.*]] = trunc i32 [[COND1146]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1147]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP474:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1148:%.*]] = zext i8 [[TMP474]] to i32
// SIMD-ONLY0-NEXT:    [[TMP475:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1149:%.*]] = zext i8 [[TMP475]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1150:%.*]] = icmp slt i32 [[CONV1148]], [[CONV1149]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1150]], label [[COND_TRUE1152:%.*]], label [[COND_FALSE1154:%.*]]
// SIMD-ONLY0:       cond.true1152:
// SIMD-ONLY0-NEXT:    [[TMP476:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1153:%.*]] = zext i8 [[TMP476]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1156:%.*]]
// SIMD-ONLY0:       cond.false1154:
// SIMD-ONLY0-NEXT:    [[TMP477:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1155:%.*]] = zext i8 [[TMP477]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1156]]
// SIMD-ONLY0:       cond.end1156:
// SIMD-ONLY0-NEXT:    [[COND1157:%.*]] = phi i32 [ [[CONV1153]], [[COND_TRUE1152]] ], [ [[CONV1155]], [[COND_FALSE1154]] ]
// SIMD-ONLY0-NEXT:    [[CONV1158:%.*]] = trunc i32 [[COND1157]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1158]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP478:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1159:%.*]] = zext i8 [[TMP478]] to i32
// SIMD-ONLY0-NEXT:    [[TMP479:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1160:%.*]] = zext i8 [[TMP479]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1161:%.*]] = icmp sgt i32 [[CONV1159]], [[CONV1160]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1161]], label [[IF_THEN1163:%.*]], label [[IF_END1164:%.*]]
// SIMD-ONLY0:       if.then1163:
// SIMD-ONLY0-NEXT:    [[TMP480:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP480]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1164]]
// SIMD-ONLY0:       if.end1164:
// SIMD-ONLY0-NEXT:    [[TMP481:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1165:%.*]] = zext i8 [[TMP481]] to i32
// SIMD-ONLY0-NEXT:    [[TMP482:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1166:%.*]] = zext i8 [[TMP482]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1167:%.*]] = icmp slt i32 [[CONV1165]], [[CONV1166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1167]], label [[IF_THEN1169:%.*]], label [[IF_END1170:%.*]]
// SIMD-ONLY0:       if.then1169:
// SIMD-ONLY0-NEXT:    [[TMP483:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP483]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1170]]
// SIMD-ONLY0:       if.end1170:
// SIMD-ONLY0-NEXT:    [[TMP484:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1171:%.*]] = zext i8 [[TMP484]] to i32
// SIMD-ONLY0-NEXT:    [[TMP485:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1172:%.*]] = zext i8 [[TMP485]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1173:%.*]] = icmp sgt i32 [[CONV1171]], [[CONV1172]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1173]], label [[IF_THEN1175:%.*]], label [[IF_END1176:%.*]]
// SIMD-ONLY0:       if.then1175:
// SIMD-ONLY0-NEXT:    [[TMP486:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP486]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1176]]
// SIMD-ONLY0:       if.end1176:
// SIMD-ONLY0-NEXT:    [[TMP487:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1177:%.*]] = zext i8 [[TMP487]] to i32
// SIMD-ONLY0-NEXT:    [[TMP488:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1178:%.*]] = zext i8 [[TMP488]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1179:%.*]] = icmp slt i32 [[CONV1177]], [[CONV1178]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1179]], label [[IF_THEN1181:%.*]], label [[IF_END1182:%.*]]
// SIMD-ONLY0:       if.then1181:
// SIMD-ONLY0-NEXT:    [[TMP489:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP489]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1182]]
// SIMD-ONLY0:       if.end1182:
// SIMD-ONLY0-NEXT:    [[TMP490:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1183:%.*]] = zext i8 [[TMP490]] to i32
// SIMD-ONLY0-NEXT:    [[TMP491:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1184:%.*]] = zext i8 [[TMP491]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1185:%.*]] = icmp eq i32 [[CONV1183]], [[CONV1184]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1185]], label [[COND_TRUE1187:%.*]], label [[COND_FALSE1189:%.*]]
// SIMD-ONLY0:       cond.true1187:
// SIMD-ONLY0-NEXT:    [[TMP492:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1188:%.*]] = zext i8 [[TMP492]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1191:%.*]]
// SIMD-ONLY0:       cond.false1189:
// SIMD-ONLY0-NEXT:    [[TMP493:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1190:%.*]] = zext i8 [[TMP493]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1191]]
// SIMD-ONLY0:       cond.end1191:
// SIMD-ONLY0-NEXT:    [[COND1192:%.*]] = phi i32 [ [[CONV1188]], [[COND_TRUE1187]] ], [ [[CONV1190]], [[COND_FALSE1189]] ]
// SIMD-ONLY0-NEXT:    [[CONV1193:%.*]] = trunc i32 [[COND1192]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1193]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP494:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1194:%.*]] = zext i8 [[TMP494]] to i32
// SIMD-ONLY0-NEXT:    [[TMP495:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1195:%.*]] = zext i8 [[TMP495]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1196:%.*]] = icmp eq i32 [[CONV1194]], [[CONV1195]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1196]], label [[COND_TRUE1198:%.*]], label [[COND_FALSE1200:%.*]]
// SIMD-ONLY0:       cond.true1198:
// SIMD-ONLY0-NEXT:    [[TMP496:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1199:%.*]] = zext i8 [[TMP496]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1202:%.*]]
// SIMD-ONLY0:       cond.false1200:
// SIMD-ONLY0-NEXT:    [[TMP497:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1201:%.*]] = zext i8 [[TMP497]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1202]]
// SIMD-ONLY0:       cond.end1202:
// SIMD-ONLY0-NEXT:    [[COND1203:%.*]] = phi i32 [ [[CONV1199]], [[COND_TRUE1198]] ], [ [[CONV1201]], [[COND_FALSE1200]] ]
// SIMD-ONLY0-NEXT:    [[CONV1204:%.*]] = trunc i32 [[COND1203]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1204]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP498:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1205:%.*]] = zext i8 [[TMP498]] to i32
// SIMD-ONLY0-NEXT:    [[TMP499:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1206:%.*]] = zext i8 [[TMP499]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1207:%.*]] = icmp eq i32 [[CONV1205]], [[CONV1206]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1207]], label [[IF_THEN1209:%.*]], label [[IF_END1210:%.*]]
// SIMD-ONLY0:       if.then1209:
// SIMD-ONLY0-NEXT:    [[TMP500:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP500]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1210]]
// SIMD-ONLY0:       if.end1210:
// SIMD-ONLY0-NEXT:    [[TMP501:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1211:%.*]] = zext i8 [[TMP501]] to i32
// SIMD-ONLY0-NEXT:    [[TMP502:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1212:%.*]] = zext i8 [[TMP502]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1213:%.*]] = icmp eq i32 [[CONV1211]], [[CONV1212]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1213]], label [[IF_THEN1215:%.*]], label [[IF_END1216:%.*]]
// SIMD-ONLY0:       if.then1215:
// SIMD-ONLY0-NEXT:    [[TMP503:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP503]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1216]]
// SIMD-ONLY0:       if.end1216:
// SIMD-ONLY0-NEXT:    [[TMP504:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1217:%.*]] = sext i16 [[TMP504]] to i32
// SIMD-ONLY0-NEXT:    [[TMP505:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1218:%.*]] = sext i16 [[TMP505]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1219:%.*]] = icmp sgt i32 [[CONV1217]], [[CONV1218]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1219]], label [[COND_TRUE1221:%.*]], label [[COND_FALSE1223:%.*]]
// SIMD-ONLY0:       cond.true1221:
// SIMD-ONLY0-NEXT:    [[TMP506:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1222:%.*]] = sext i16 [[TMP506]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1225:%.*]]
// SIMD-ONLY0:       cond.false1223:
// SIMD-ONLY0-NEXT:    [[TMP507:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1224:%.*]] = sext i16 [[TMP507]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1225]]
// SIMD-ONLY0:       cond.end1225:
// SIMD-ONLY0-NEXT:    [[COND1226:%.*]] = phi i32 [ [[CONV1222]], [[COND_TRUE1221]] ], [ [[CONV1224]], [[COND_FALSE1223]] ]
// SIMD-ONLY0-NEXT:    [[CONV1227:%.*]] = trunc i32 [[COND1226]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1227]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP508:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1228:%.*]] = sext i16 [[TMP508]] to i32
// SIMD-ONLY0-NEXT:    [[TMP509:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1229:%.*]] = sext i16 [[TMP509]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1230:%.*]] = icmp slt i32 [[CONV1228]], [[CONV1229]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1230]], label [[COND_TRUE1232:%.*]], label [[COND_FALSE1234:%.*]]
// SIMD-ONLY0:       cond.true1232:
// SIMD-ONLY0-NEXT:    [[TMP510:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1233:%.*]] = sext i16 [[TMP510]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1236:%.*]]
// SIMD-ONLY0:       cond.false1234:
// SIMD-ONLY0-NEXT:    [[TMP511:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1235:%.*]] = sext i16 [[TMP511]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1236]]
// SIMD-ONLY0:       cond.end1236:
// SIMD-ONLY0-NEXT:    [[COND1237:%.*]] = phi i32 [ [[CONV1233]], [[COND_TRUE1232]] ], [ [[CONV1235]], [[COND_FALSE1234]] ]
// SIMD-ONLY0-NEXT:    [[CONV1238:%.*]] = trunc i32 [[COND1237]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1238]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP512:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1239:%.*]] = sext i16 [[TMP512]] to i32
// SIMD-ONLY0-NEXT:    [[TMP513:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1240:%.*]] = sext i16 [[TMP513]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1241:%.*]] = icmp sgt i32 [[CONV1239]], [[CONV1240]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1241]], label [[COND_TRUE1243:%.*]], label [[COND_FALSE1245:%.*]]
// SIMD-ONLY0:       cond.true1243:
// SIMD-ONLY0-NEXT:    [[TMP514:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1244:%.*]] = sext i16 [[TMP514]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1247:%.*]]
// SIMD-ONLY0:       cond.false1245:
// SIMD-ONLY0-NEXT:    [[TMP515:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1246:%.*]] = sext i16 [[TMP515]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1247]]
// SIMD-ONLY0:       cond.end1247:
// SIMD-ONLY0-NEXT:    [[COND1248:%.*]] = phi i32 [ [[CONV1244]], [[COND_TRUE1243]] ], [ [[CONV1246]], [[COND_FALSE1245]] ]
// SIMD-ONLY0-NEXT:    [[CONV1249:%.*]] = trunc i32 [[COND1248]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1249]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP516:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1250:%.*]] = sext i16 [[TMP516]] to i32
// SIMD-ONLY0-NEXT:    [[TMP517:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1251:%.*]] = sext i16 [[TMP517]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1252:%.*]] = icmp slt i32 [[CONV1250]], [[CONV1251]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1252]], label [[COND_TRUE1254:%.*]], label [[COND_FALSE1256:%.*]]
// SIMD-ONLY0:       cond.true1254:
// SIMD-ONLY0-NEXT:    [[TMP518:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1255:%.*]] = sext i16 [[TMP518]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1258:%.*]]
// SIMD-ONLY0:       cond.false1256:
// SIMD-ONLY0-NEXT:    [[TMP519:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1257:%.*]] = sext i16 [[TMP519]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1258]]
// SIMD-ONLY0:       cond.end1258:
// SIMD-ONLY0-NEXT:    [[COND1259:%.*]] = phi i32 [ [[CONV1255]], [[COND_TRUE1254]] ], [ [[CONV1257]], [[COND_FALSE1256]] ]
// SIMD-ONLY0-NEXT:    [[CONV1260:%.*]] = trunc i32 [[COND1259]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1260]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP520:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1261:%.*]] = sext i16 [[TMP520]] to i32
// SIMD-ONLY0-NEXT:    [[TMP521:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1262:%.*]] = sext i16 [[TMP521]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1263:%.*]] = icmp sgt i32 [[CONV1261]], [[CONV1262]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1263]], label [[IF_THEN1265:%.*]], label [[IF_END1266:%.*]]
// SIMD-ONLY0:       if.then1265:
// SIMD-ONLY0-NEXT:    [[TMP522:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP522]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1266]]
// SIMD-ONLY0:       if.end1266:
// SIMD-ONLY0-NEXT:    [[TMP523:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1267:%.*]] = sext i16 [[TMP523]] to i32
// SIMD-ONLY0-NEXT:    [[TMP524:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1268:%.*]] = sext i16 [[TMP524]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1269:%.*]] = icmp slt i32 [[CONV1267]], [[CONV1268]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1269]], label [[IF_THEN1271:%.*]], label [[IF_END1272:%.*]]
// SIMD-ONLY0:       if.then1271:
// SIMD-ONLY0-NEXT:    [[TMP525:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP525]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1272]]
// SIMD-ONLY0:       if.end1272:
// SIMD-ONLY0-NEXT:    [[TMP526:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1273:%.*]] = sext i16 [[TMP526]] to i32
// SIMD-ONLY0-NEXT:    [[TMP527:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1274:%.*]] = sext i16 [[TMP527]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1275:%.*]] = icmp sgt i32 [[CONV1273]], [[CONV1274]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1275]], label [[IF_THEN1277:%.*]], label [[IF_END1278:%.*]]
// SIMD-ONLY0:       if.then1277:
// SIMD-ONLY0-NEXT:    [[TMP528:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP528]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1278]]
// SIMD-ONLY0:       if.end1278:
// SIMD-ONLY0-NEXT:    [[TMP529:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1279:%.*]] = sext i16 [[TMP529]] to i32
// SIMD-ONLY0-NEXT:    [[TMP530:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1280:%.*]] = sext i16 [[TMP530]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1281:%.*]] = icmp slt i32 [[CONV1279]], [[CONV1280]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1281]], label [[IF_THEN1283:%.*]], label [[IF_END1284:%.*]]
// SIMD-ONLY0:       if.then1283:
// SIMD-ONLY0-NEXT:    [[TMP531:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP531]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1284]]
// SIMD-ONLY0:       if.end1284:
// SIMD-ONLY0-NEXT:    [[TMP532:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1285:%.*]] = sext i16 [[TMP532]] to i32
// SIMD-ONLY0-NEXT:    [[TMP533:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1286:%.*]] = sext i16 [[TMP533]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1287:%.*]] = icmp eq i32 [[CONV1285]], [[CONV1286]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1287]], label [[COND_TRUE1289:%.*]], label [[COND_FALSE1291:%.*]]
// SIMD-ONLY0:       cond.true1289:
// SIMD-ONLY0-NEXT:    [[TMP534:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1290:%.*]] = sext i16 [[TMP534]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1293:%.*]]
// SIMD-ONLY0:       cond.false1291:
// SIMD-ONLY0-NEXT:    [[TMP535:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1292:%.*]] = sext i16 [[TMP535]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1293]]
// SIMD-ONLY0:       cond.end1293:
// SIMD-ONLY0-NEXT:    [[COND1294:%.*]] = phi i32 [ [[CONV1290]], [[COND_TRUE1289]] ], [ [[CONV1292]], [[COND_FALSE1291]] ]
// SIMD-ONLY0-NEXT:    [[CONV1295:%.*]] = trunc i32 [[COND1294]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1295]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP536:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1296:%.*]] = sext i16 [[TMP536]] to i32
// SIMD-ONLY0-NEXT:    [[TMP537:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1297:%.*]] = sext i16 [[TMP537]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1298:%.*]] = icmp eq i32 [[CONV1296]], [[CONV1297]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1298]], label [[COND_TRUE1300:%.*]], label [[COND_FALSE1302:%.*]]
// SIMD-ONLY0:       cond.true1300:
// SIMD-ONLY0-NEXT:    [[TMP538:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1301:%.*]] = sext i16 [[TMP538]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1304:%.*]]
// SIMD-ONLY0:       cond.false1302:
// SIMD-ONLY0-NEXT:    [[TMP539:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1303:%.*]] = sext i16 [[TMP539]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1304]]
// SIMD-ONLY0:       cond.end1304:
// SIMD-ONLY0-NEXT:    [[COND1305:%.*]] = phi i32 [ [[CONV1301]], [[COND_TRUE1300]] ], [ [[CONV1303]], [[COND_FALSE1302]] ]
// SIMD-ONLY0-NEXT:    [[CONV1306:%.*]] = trunc i32 [[COND1305]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1306]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP540:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1307:%.*]] = sext i16 [[TMP540]] to i32
// SIMD-ONLY0-NEXT:    [[TMP541:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1308:%.*]] = sext i16 [[TMP541]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1309:%.*]] = icmp eq i32 [[CONV1307]], [[CONV1308]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1309]], label [[IF_THEN1311:%.*]], label [[IF_END1312:%.*]]
// SIMD-ONLY0:       if.then1311:
// SIMD-ONLY0-NEXT:    [[TMP542:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP542]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1312]]
// SIMD-ONLY0:       if.end1312:
// SIMD-ONLY0-NEXT:    [[TMP543:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1313:%.*]] = sext i16 [[TMP543]] to i32
// SIMD-ONLY0-NEXT:    [[TMP544:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1314:%.*]] = sext i16 [[TMP544]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1315:%.*]] = icmp eq i32 [[CONV1313]], [[CONV1314]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1315]], label [[IF_THEN1317:%.*]], label [[IF_END1318:%.*]]
// SIMD-ONLY0:       if.then1317:
// SIMD-ONLY0-NEXT:    [[TMP545:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP545]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1318]]
// SIMD-ONLY0:       if.end1318:
// SIMD-ONLY0-NEXT:    [[TMP546:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1319:%.*]] = zext i16 [[TMP546]] to i32
// SIMD-ONLY0-NEXT:    [[TMP547:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1320:%.*]] = zext i16 [[TMP547]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1321:%.*]] = icmp sgt i32 [[CONV1319]], [[CONV1320]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1321]], label [[COND_TRUE1323:%.*]], label [[COND_FALSE1325:%.*]]
// SIMD-ONLY0:       cond.true1323:
// SIMD-ONLY0-NEXT:    [[TMP548:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1324:%.*]] = zext i16 [[TMP548]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1327:%.*]]
// SIMD-ONLY0:       cond.false1325:
// SIMD-ONLY0-NEXT:    [[TMP549:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1326:%.*]] = zext i16 [[TMP549]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1327]]
// SIMD-ONLY0:       cond.end1327:
// SIMD-ONLY0-NEXT:    [[COND1328:%.*]] = phi i32 [ [[CONV1324]], [[COND_TRUE1323]] ], [ [[CONV1326]], [[COND_FALSE1325]] ]
// SIMD-ONLY0-NEXT:    [[CONV1329:%.*]] = trunc i32 [[COND1328]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1329]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP550:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1330:%.*]] = zext i16 [[TMP550]] to i32
// SIMD-ONLY0-NEXT:    [[TMP551:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1331:%.*]] = zext i16 [[TMP551]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1332:%.*]] = icmp slt i32 [[CONV1330]], [[CONV1331]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1332]], label [[COND_TRUE1334:%.*]], label [[COND_FALSE1336:%.*]]
// SIMD-ONLY0:       cond.true1334:
// SIMD-ONLY0-NEXT:    [[TMP552:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1335:%.*]] = zext i16 [[TMP552]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1338:%.*]]
// SIMD-ONLY0:       cond.false1336:
// SIMD-ONLY0-NEXT:    [[TMP553:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1337:%.*]] = zext i16 [[TMP553]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1338]]
// SIMD-ONLY0:       cond.end1338:
// SIMD-ONLY0-NEXT:    [[COND1339:%.*]] = phi i32 [ [[CONV1335]], [[COND_TRUE1334]] ], [ [[CONV1337]], [[COND_FALSE1336]] ]
// SIMD-ONLY0-NEXT:    [[CONV1340:%.*]] = trunc i32 [[COND1339]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1340]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP554:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1341:%.*]] = zext i16 [[TMP554]] to i32
// SIMD-ONLY0-NEXT:    [[TMP555:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1342:%.*]] = zext i16 [[TMP555]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1343:%.*]] = icmp sgt i32 [[CONV1341]], [[CONV1342]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1343]], label [[COND_TRUE1345:%.*]], label [[COND_FALSE1347:%.*]]
// SIMD-ONLY0:       cond.true1345:
// SIMD-ONLY0-NEXT:    [[TMP556:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1346:%.*]] = zext i16 [[TMP556]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1349:%.*]]
// SIMD-ONLY0:       cond.false1347:
// SIMD-ONLY0-NEXT:    [[TMP557:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1348:%.*]] = zext i16 [[TMP557]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1349]]
// SIMD-ONLY0:       cond.end1349:
// SIMD-ONLY0-NEXT:    [[COND1350:%.*]] = phi i32 [ [[CONV1346]], [[COND_TRUE1345]] ], [ [[CONV1348]], [[COND_FALSE1347]] ]
// SIMD-ONLY0-NEXT:    [[CONV1351:%.*]] = trunc i32 [[COND1350]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1351]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP558:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1352:%.*]] = zext i16 [[TMP558]] to i32
// SIMD-ONLY0-NEXT:    [[TMP559:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1353:%.*]] = zext i16 [[TMP559]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1354:%.*]] = icmp slt i32 [[CONV1352]], [[CONV1353]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1354]], label [[COND_TRUE1356:%.*]], label [[COND_FALSE1358:%.*]]
// SIMD-ONLY0:       cond.true1356:
// SIMD-ONLY0-NEXT:    [[TMP560:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1357:%.*]] = zext i16 [[TMP560]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1360:%.*]]
// SIMD-ONLY0:       cond.false1358:
// SIMD-ONLY0-NEXT:    [[TMP561:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1359:%.*]] = zext i16 [[TMP561]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1360]]
// SIMD-ONLY0:       cond.end1360:
// SIMD-ONLY0-NEXT:    [[COND1361:%.*]] = phi i32 [ [[CONV1357]], [[COND_TRUE1356]] ], [ [[CONV1359]], [[COND_FALSE1358]] ]
// SIMD-ONLY0-NEXT:    [[CONV1362:%.*]] = trunc i32 [[COND1361]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1362]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP562:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1363:%.*]] = zext i16 [[TMP562]] to i32
// SIMD-ONLY0-NEXT:    [[TMP563:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1364:%.*]] = zext i16 [[TMP563]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1365:%.*]] = icmp sgt i32 [[CONV1363]], [[CONV1364]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1365]], label [[IF_THEN1367:%.*]], label [[IF_END1368:%.*]]
// SIMD-ONLY0:       if.then1367:
// SIMD-ONLY0-NEXT:    [[TMP564:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP564]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1368]]
// SIMD-ONLY0:       if.end1368:
// SIMD-ONLY0-NEXT:    [[TMP565:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1369:%.*]] = zext i16 [[TMP565]] to i32
// SIMD-ONLY0-NEXT:    [[TMP566:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1370:%.*]] = zext i16 [[TMP566]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1371:%.*]] = icmp slt i32 [[CONV1369]], [[CONV1370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1371]], label [[IF_THEN1373:%.*]], label [[IF_END1374:%.*]]
// SIMD-ONLY0:       if.then1373:
// SIMD-ONLY0-NEXT:    [[TMP567:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP567]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1374]]
// SIMD-ONLY0:       if.end1374:
// SIMD-ONLY0-NEXT:    [[TMP568:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1375:%.*]] = zext i16 [[TMP568]] to i32
// SIMD-ONLY0-NEXT:    [[TMP569:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1376:%.*]] = zext i16 [[TMP569]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1377:%.*]] = icmp sgt i32 [[CONV1375]], [[CONV1376]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1377]], label [[IF_THEN1379:%.*]], label [[IF_END1380:%.*]]
// SIMD-ONLY0:       if.then1379:
// SIMD-ONLY0-NEXT:    [[TMP570:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP570]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1380]]
// SIMD-ONLY0:       if.end1380:
// SIMD-ONLY0-NEXT:    [[TMP571:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1381:%.*]] = zext i16 [[TMP571]] to i32
// SIMD-ONLY0-NEXT:    [[TMP572:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1382:%.*]] = zext i16 [[TMP572]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1383:%.*]] = icmp slt i32 [[CONV1381]], [[CONV1382]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1383]], label [[IF_THEN1385:%.*]], label [[IF_END1386:%.*]]
// SIMD-ONLY0:       if.then1385:
// SIMD-ONLY0-NEXT:    [[TMP573:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP573]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1386]]
// SIMD-ONLY0:       if.end1386:
// SIMD-ONLY0-NEXT:    [[TMP574:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1387:%.*]] = zext i16 [[TMP574]] to i32
// SIMD-ONLY0-NEXT:    [[TMP575:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1388:%.*]] = zext i16 [[TMP575]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1389:%.*]] = icmp eq i32 [[CONV1387]], [[CONV1388]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1389]], label [[COND_TRUE1391:%.*]], label [[COND_FALSE1393:%.*]]
// SIMD-ONLY0:       cond.true1391:
// SIMD-ONLY0-NEXT:    [[TMP576:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1392:%.*]] = zext i16 [[TMP576]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1395:%.*]]
// SIMD-ONLY0:       cond.false1393:
// SIMD-ONLY0-NEXT:    [[TMP577:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1394:%.*]] = zext i16 [[TMP577]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1395]]
// SIMD-ONLY0:       cond.end1395:
// SIMD-ONLY0-NEXT:    [[COND1396:%.*]] = phi i32 [ [[CONV1392]], [[COND_TRUE1391]] ], [ [[CONV1394]], [[COND_FALSE1393]] ]
// SIMD-ONLY0-NEXT:    [[CONV1397:%.*]] = trunc i32 [[COND1396]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1397]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP578:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1398:%.*]] = zext i16 [[TMP578]] to i32
// SIMD-ONLY0-NEXT:    [[TMP579:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1399:%.*]] = zext i16 [[TMP579]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1400:%.*]] = icmp eq i32 [[CONV1398]], [[CONV1399]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1400]], label [[COND_TRUE1402:%.*]], label [[COND_FALSE1404:%.*]]
// SIMD-ONLY0:       cond.true1402:
// SIMD-ONLY0-NEXT:    [[TMP580:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1403:%.*]] = zext i16 [[TMP580]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1406:%.*]]
// SIMD-ONLY0:       cond.false1404:
// SIMD-ONLY0-NEXT:    [[TMP581:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1405:%.*]] = zext i16 [[TMP581]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1406]]
// SIMD-ONLY0:       cond.end1406:
// SIMD-ONLY0-NEXT:    [[COND1407:%.*]] = phi i32 [ [[CONV1403]], [[COND_TRUE1402]] ], [ [[CONV1405]], [[COND_FALSE1404]] ]
// SIMD-ONLY0-NEXT:    [[CONV1408:%.*]] = trunc i32 [[COND1407]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1408]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP582:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1409:%.*]] = zext i16 [[TMP582]] to i32
// SIMD-ONLY0-NEXT:    [[TMP583:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1410:%.*]] = zext i16 [[TMP583]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1411:%.*]] = icmp eq i32 [[CONV1409]], [[CONV1410]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1411]], label [[IF_THEN1413:%.*]], label [[IF_END1414:%.*]]
// SIMD-ONLY0:       if.then1413:
// SIMD-ONLY0-NEXT:    [[TMP584:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP584]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1414]]
// SIMD-ONLY0:       if.end1414:
// SIMD-ONLY0-NEXT:    [[TMP585:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1415:%.*]] = zext i16 [[TMP585]] to i32
// SIMD-ONLY0-NEXT:    [[TMP586:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1416:%.*]] = zext i16 [[TMP586]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1417:%.*]] = icmp eq i32 [[CONV1415]], [[CONV1416]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1417]], label [[IF_THEN1419:%.*]], label [[IF_END1420:%.*]]
// SIMD-ONLY0:       if.then1419:
// SIMD-ONLY0-NEXT:    [[TMP587:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP587]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1420]]
// SIMD-ONLY0:       if.end1420:
// SIMD-ONLY0-NEXT:    [[TMP588:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1421:%.*]] = sext i16 [[TMP588]] to i32
// SIMD-ONLY0-NEXT:    [[TMP589:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1422:%.*]] = sext i16 [[TMP589]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1423:%.*]] = icmp sgt i32 [[CONV1421]], [[CONV1422]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1423]], label [[COND_TRUE1425:%.*]], label [[COND_FALSE1427:%.*]]
// SIMD-ONLY0:       cond.true1425:
// SIMD-ONLY0-NEXT:    [[TMP590:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1426:%.*]] = sext i16 [[TMP590]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1429:%.*]]
// SIMD-ONLY0:       cond.false1427:
// SIMD-ONLY0-NEXT:    [[TMP591:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1428:%.*]] = sext i16 [[TMP591]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1429]]
// SIMD-ONLY0:       cond.end1429:
// SIMD-ONLY0-NEXT:    [[COND1430:%.*]] = phi i32 [ [[CONV1426]], [[COND_TRUE1425]] ], [ [[CONV1428]], [[COND_FALSE1427]] ]
// SIMD-ONLY0-NEXT:    [[CONV1431:%.*]] = trunc i32 [[COND1430]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1431]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP592:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1432:%.*]] = sext i16 [[TMP592]] to i32
// SIMD-ONLY0-NEXT:    [[TMP593:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1433:%.*]] = sext i16 [[TMP593]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1434:%.*]] = icmp slt i32 [[CONV1432]], [[CONV1433]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1434]], label [[COND_TRUE1436:%.*]], label [[COND_FALSE1438:%.*]]
// SIMD-ONLY0:       cond.true1436:
// SIMD-ONLY0-NEXT:    [[TMP594:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1437:%.*]] = sext i16 [[TMP594]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1440:%.*]]
// SIMD-ONLY0:       cond.false1438:
// SIMD-ONLY0-NEXT:    [[TMP595:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1439:%.*]] = sext i16 [[TMP595]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1440]]
// SIMD-ONLY0:       cond.end1440:
// SIMD-ONLY0-NEXT:    [[COND1441:%.*]] = phi i32 [ [[CONV1437]], [[COND_TRUE1436]] ], [ [[CONV1439]], [[COND_FALSE1438]] ]
// SIMD-ONLY0-NEXT:    [[CONV1442:%.*]] = trunc i32 [[COND1441]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1442]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP596:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1443:%.*]] = sext i16 [[TMP596]] to i32
// SIMD-ONLY0-NEXT:    [[TMP597:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1444:%.*]] = sext i16 [[TMP597]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1445:%.*]] = icmp sgt i32 [[CONV1443]], [[CONV1444]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1445]], label [[COND_TRUE1447:%.*]], label [[COND_FALSE1449:%.*]]
// SIMD-ONLY0:       cond.true1447:
// SIMD-ONLY0-NEXT:    [[TMP598:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1448:%.*]] = sext i16 [[TMP598]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1451:%.*]]
// SIMD-ONLY0:       cond.false1449:
// SIMD-ONLY0-NEXT:    [[TMP599:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1450:%.*]] = sext i16 [[TMP599]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1451]]
// SIMD-ONLY0:       cond.end1451:
// SIMD-ONLY0-NEXT:    [[COND1452:%.*]] = phi i32 [ [[CONV1448]], [[COND_TRUE1447]] ], [ [[CONV1450]], [[COND_FALSE1449]] ]
// SIMD-ONLY0-NEXT:    [[CONV1453:%.*]] = trunc i32 [[COND1452]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1453]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP600:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1454:%.*]] = sext i16 [[TMP600]] to i32
// SIMD-ONLY0-NEXT:    [[TMP601:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1455:%.*]] = sext i16 [[TMP601]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1456:%.*]] = icmp slt i32 [[CONV1454]], [[CONV1455]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1456]], label [[COND_TRUE1458:%.*]], label [[COND_FALSE1460:%.*]]
// SIMD-ONLY0:       cond.true1458:
// SIMD-ONLY0-NEXT:    [[TMP602:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1459:%.*]] = sext i16 [[TMP602]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1462:%.*]]
// SIMD-ONLY0:       cond.false1460:
// SIMD-ONLY0-NEXT:    [[TMP603:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1461:%.*]] = sext i16 [[TMP603]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1462]]
// SIMD-ONLY0:       cond.end1462:
// SIMD-ONLY0-NEXT:    [[COND1463:%.*]] = phi i32 [ [[CONV1459]], [[COND_TRUE1458]] ], [ [[CONV1461]], [[COND_FALSE1460]] ]
// SIMD-ONLY0-NEXT:    [[CONV1464:%.*]] = trunc i32 [[COND1463]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1464]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP604:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1465:%.*]] = sext i16 [[TMP604]] to i32
// SIMD-ONLY0-NEXT:    [[TMP605:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1466:%.*]] = sext i16 [[TMP605]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1467:%.*]] = icmp sgt i32 [[CONV1465]], [[CONV1466]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1467]], label [[IF_THEN1469:%.*]], label [[IF_END1470:%.*]]
// SIMD-ONLY0:       if.then1469:
// SIMD-ONLY0-NEXT:    [[TMP606:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP606]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1470]]
// SIMD-ONLY0:       if.end1470:
// SIMD-ONLY0-NEXT:    [[TMP607:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1471:%.*]] = sext i16 [[TMP607]] to i32
// SIMD-ONLY0-NEXT:    [[TMP608:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1472:%.*]] = sext i16 [[TMP608]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1473:%.*]] = icmp slt i32 [[CONV1471]], [[CONV1472]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1473]], label [[IF_THEN1475:%.*]], label [[IF_END1476:%.*]]
// SIMD-ONLY0:       if.then1475:
// SIMD-ONLY0-NEXT:    [[TMP609:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP609]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1476]]
// SIMD-ONLY0:       if.end1476:
// SIMD-ONLY0-NEXT:    [[TMP610:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1477:%.*]] = sext i16 [[TMP610]] to i32
// SIMD-ONLY0-NEXT:    [[TMP611:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1478:%.*]] = sext i16 [[TMP611]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1479:%.*]] = icmp sgt i32 [[CONV1477]], [[CONV1478]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1479]], label [[IF_THEN1481:%.*]], label [[IF_END1482:%.*]]
// SIMD-ONLY0:       if.then1481:
// SIMD-ONLY0-NEXT:    [[TMP612:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP612]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1482]]
// SIMD-ONLY0:       if.end1482:
// SIMD-ONLY0-NEXT:    [[TMP613:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1483:%.*]] = sext i16 [[TMP613]] to i32
// SIMD-ONLY0-NEXT:    [[TMP614:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1484:%.*]] = sext i16 [[TMP614]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1485:%.*]] = icmp slt i32 [[CONV1483]], [[CONV1484]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1485]], label [[IF_THEN1487:%.*]], label [[IF_END1488:%.*]]
// SIMD-ONLY0:       if.then1487:
// SIMD-ONLY0-NEXT:    [[TMP615:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP615]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1488]]
// SIMD-ONLY0:       if.end1488:
// SIMD-ONLY0-NEXT:    [[TMP616:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1489:%.*]] = sext i16 [[TMP616]] to i32
// SIMD-ONLY0-NEXT:    [[TMP617:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1490:%.*]] = sext i16 [[TMP617]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1491:%.*]] = icmp eq i32 [[CONV1489]], [[CONV1490]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1491]], label [[COND_TRUE1493:%.*]], label [[COND_FALSE1495:%.*]]
// SIMD-ONLY0:       cond.true1493:
// SIMD-ONLY0-NEXT:    [[TMP618:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1494:%.*]] = sext i16 [[TMP618]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1497:%.*]]
// SIMD-ONLY0:       cond.false1495:
// SIMD-ONLY0-NEXT:    [[TMP619:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1496:%.*]] = sext i16 [[TMP619]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1497]]
// SIMD-ONLY0:       cond.end1497:
// SIMD-ONLY0-NEXT:    [[COND1498:%.*]] = phi i32 [ [[CONV1494]], [[COND_TRUE1493]] ], [ [[CONV1496]], [[COND_FALSE1495]] ]
// SIMD-ONLY0-NEXT:    [[CONV1499:%.*]] = trunc i32 [[COND1498]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1499]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP620:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1500:%.*]] = sext i16 [[TMP620]] to i32
// SIMD-ONLY0-NEXT:    [[TMP621:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1501:%.*]] = sext i16 [[TMP621]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1502:%.*]] = icmp eq i32 [[CONV1500]], [[CONV1501]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1502]], label [[COND_TRUE1504:%.*]], label [[COND_FALSE1506:%.*]]
// SIMD-ONLY0:       cond.true1504:
// SIMD-ONLY0-NEXT:    [[TMP622:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1505:%.*]] = sext i16 [[TMP622]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1508:%.*]]
// SIMD-ONLY0:       cond.false1506:
// SIMD-ONLY0-NEXT:    [[TMP623:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1507:%.*]] = sext i16 [[TMP623]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1508]]
// SIMD-ONLY0:       cond.end1508:
// SIMD-ONLY0-NEXT:    [[COND1509:%.*]] = phi i32 [ [[CONV1505]], [[COND_TRUE1504]] ], [ [[CONV1507]], [[COND_FALSE1506]] ]
// SIMD-ONLY0-NEXT:    [[CONV1510:%.*]] = trunc i32 [[COND1509]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1510]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP624:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1511:%.*]] = sext i16 [[TMP624]] to i32
// SIMD-ONLY0-NEXT:    [[TMP625:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1512:%.*]] = sext i16 [[TMP625]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1513:%.*]] = icmp eq i32 [[CONV1511]], [[CONV1512]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1513]], label [[IF_THEN1515:%.*]], label [[IF_END1516:%.*]]
// SIMD-ONLY0:       if.then1515:
// SIMD-ONLY0-NEXT:    [[TMP626:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP626]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1516]]
// SIMD-ONLY0:       if.end1516:
// SIMD-ONLY0-NEXT:    [[TMP627:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1517:%.*]] = sext i16 [[TMP627]] to i32
// SIMD-ONLY0-NEXT:    [[TMP628:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1518:%.*]] = sext i16 [[TMP628]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1519:%.*]] = icmp eq i32 [[CONV1517]], [[CONV1518]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1519]], label [[IF_THEN1521:%.*]], label [[IF_END1522:%.*]]
// SIMD-ONLY0:       if.then1521:
// SIMD-ONLY0-NEXT:    [[TMP629:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP629]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1522]]
// SIMD-ONLY0:       if.end1522:
// SIMD-ONLY0-NEXT:    [[TMP630:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1523:%.*]] = zext i16 [[TMP630]] to i32
// SIMD-ONLY0-NEXT:    [[TMP631:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1524:%.*]] = zext i16 [[TMP631]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1525:%.*]] = icmp sgt i32 [[CONV1523]], [[CONV1524]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1525]], label [[COND_TRUE1527:%.*]], label [[COND_FALSE1529:%.*]]
// SIMD-ONLY0:       cond.true1527:
// SIMD-ONLY0-NEXT:    [[TMP632:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1528:%.*]] = zext i16 [[TMP632]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1531:%.*]]
// SIMD-ONLY0:       cond.false1529:
// SIMD-ONLY0-NEXT:    [[TMP633:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1530:%.*]] = zext i16 [[TMP633]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1531]]
// SIMD-ONLY0:       cond.end1531:
// SIMD-ONLY0-NEXT:    [[COND1532:%.*]] = phi i32 [ [[CONV1528]], [[COND_TRUE1527]] ], [ [[CONV1530]], [[COND_FALSE1529]] ]
// SIMD-ONLY0-NEXT:    [[CONV1533:%.*]] = trunc i32 [[COND1532]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1533]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP634:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1534:%.*]] = zext i16 [[TMP634]] to i32
// SIMD-ONLY0-NEXT:    [[TMP635:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1535:%.*]] = zext i16 [[TMP635]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1536:%.*]] = icmp slt i32 [[CONV1534]], [[CONV1535]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1536]], label [[COND_TRUE1538:%.*]], label [[COND_FALSE1540:%.*]]
// SIMD-ONLY0:       cond.true1538:
// SIMD-ONLY0-NEXT:    [[TMP636:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1539:%.*]] = zext i16 [[TMP636]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1542:%.*]]
// SIMD-ONLY0:       cond.false1540:
// SIMD-ONLY0-NEXT:    [[TMP637:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1541:%.*]] = zext i16 [[TMP637]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1542]]
// SIMD-ONLY0:       cond.end1542:
// SIMD-ONLY0-NEXT:    [[COND1543:%.*]] = phi i32 [ [[CONV1539]], [[COND_TRUE1538]] ], [ [[CONV1541]], [[COND_FALSE1540]] ]
// SIMD-ONLY0-NEXT:    [[CONV1544:%.*]] = trunc i32 [[COND1543]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1544]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP638:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1545:%.*]] = zext i16 [[TMP638]] to i32
// SIMD-ONLY0-NEXT:    [[TMP639:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1546:%.*]] = zext i16 [[TMP639]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1547:%.*]] = icmp sgt i32 [[CONV1545]], [[CONV1546]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1547]], label [[COND_TRUE1549:%.*]], label [[COND_FALSE1551:%.*]]
// SIMD-ONLY0:       cond.true1549:
// SIMD-ONLY0-NEXT:    [[TMP640:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1550:%.*]] = zext i16 [[TMP640]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1553:%.*]]
// SIMD-ONLY0:       cond.false1551:
// SIMD-ONLY0-NEXT:    [[TMP641:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1552:%.*]] = zext i16 [[TMP641]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1553]]
// SIMD-ONLY0:       cond.end1553:
// SIMD-ONLY0-NEXT:    [[COND1554:%.*]] = phi i32 [ [[CONV1550]], [[COND_TRUE1549]] ], [ [[CONV1552]], [[COND_FALSE1551]] ]
// SIMD-ONLY0-NEXT:    [[CONV1555:%.*]] = trunc i32 [[COND1554]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1555]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP642:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1556:%.*]] = zext i16 [[TMP642]] to i32
// SIMD-ONLY0-NEXT:    [[TMP643:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1557:%.*]] = zext i16 [[TMP643]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1558:%.*]] = icmp slt i32 [[CONV1556]], [[CONV1557]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1558]], label [[COND_TRUE1560:%.*]], label [[COND_FALSE1562:%.*]]
// SIMD-ONLY0:       cond.true1560:
// SIMD-ONLY0-NEXT:    [[TMP644:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1561:%.*]] = zext i16 [[TMP644]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1564:%.*]]
// SIMD-ONLY0:       cond.false1562:
// SIMD-ONLY0-NEXT:    [[TMP645:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1563:%.*]] = zext i16 [[TMP645]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1564]]
// SIMD-ONLY0:       cond.end1564:
// SIMD-ONLY0-NEXT:    [[COND1565:%.*]] = phi i32 [ [[CONV1561]], [[COND_TRUE1560]] ], [ [[CONV1563]], [[COND_FALSE1562]] ]
// SIMD-ONLY0-NEXT:    [[CONV1566:%.*]] = trunc i32 [[COND1565]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1566]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP646:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1567:%.*]] = zext i16 [[TMP646]] to i32
// SIMD-ONLY0-NEXT:    [[TMP647:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1568:%.*]] = zext i16 [[TMP647]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1569:%.*]] = icmp sgt i32 [[CONV1567]], [[CONV1568]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1569]], label [[IF_THEN1571:%.*]], label [[IF_END1572:%.*]]
// SIMD-ONLY0:       if.then1571:
// SIMD-ONLY0-NEXT:    [[TMP648:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP648]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1572]]
// SIMD-ONLY0:       if.end1572:
// SIMD-ONLY0-NEXT:    [[TMP649:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1573:%.*]] = zext i16 [[TMP649]] to i32
// SIMD-ONLY0-NEXT:    [[TMP650:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1574:%.*]] = zext i16 [[TMP650]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1575:%.*]] = icmp slt i32 [[CONV1573]], [[CONV1574]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1575]], label [[IF_THEN1577:%.*]], label [[IF_END1578:%.*]]
// SIMD-ONLY0:       if.then1577:
// SIMD-ONLY0-NEXT:    [[TMP651:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP651]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1578]]
// SIMD-ONLY0:       if.end1578:
// SIMD-ONLY0-NEXT:    [[TMP652:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1579:%.*]] = zext i16 [[TMP652]] to i32
// SIMD-ONLY0-NEXT:    [[TMP653:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1580:%.*]] = zext i16 [[TMP653]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1581:%.*]] = icmp sgt i32 [[CONV1579]], [[CONV1580]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1581]], label [[IF_THEN1583:%.*]], label [[IF_END1584:%.*]]
// SIMD-ONLY0:       if.then1583:
// SIMD-ONLY0-NEXT:    [[TMP654:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP654]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1584]]
// SIMD-ONLY0:       if.end1584:
// SIMD-ONLY0-NEXT:    [[TMP655:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1585:%.*]] = zext i16 [[TMP655]] to i32
// SIMD-ONLY0-NEXT:    [[TMP656:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1586:%.*]] = zext i16 [[TMP656]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1587:%.*]] = icmp slt i32 [[CONV1585]], [[CONV1586]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1587]], label [[IF_THEN1589:%.*]], label [[IF_END1590:%.*]]
// SIMD-ONLY0:       if.then1589:
// SIMD-ONLY0-NEXT:    [[TMP657:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP657]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1590]]
// SIMD-ONLY0:       if.end1590:
// SIMD-ONLY0-NEXT:    [[TMP658:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1591:%.*]] = zext i16 [[TMP658]] to i32
// SIMD-ONLY0-NEXT:    [[TMP659:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1592:%.*]] = zext i16 [[TMP659]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1593:%.*]] = icmp eq i32 [[CONV1591]], [[CONV1592]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1593]], label [[COND_TRUE1595:%.*]], label [[COND_FALSE1597:%.*]]
// SIMD-ONLY0:       cond.true1595:
// SIMD-ONLY0-NEXT:    [[TMP660:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1596:%.*]] = zext i16 [[TMP660]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1599:%.*]]
// SIMD-ONLY0:       cond.false1597:
// SIMD-ONLY0-NEXT:    [[TMP661:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1598:%.*]] = zext i16 [[TMP661]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1599]]
// SIMD-ONLY0:       cond.end1599:
// SIMD-ONLY0-NEXT:    [[COND1600:%.*]] = phi i32 [ [[CONV1596]], [[COND_TRUE1595]] ], [ [[CONV1598]], [[COND_FALSE1597]] ]
// SIMD-ONLY0-NEXT:    [[CONV1601:%.*]] = trunc i32 [[COND1600]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1601]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP662:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1602:%.*]] = zext i16 [[TMP662]] to i32
// SIMD-ONLY0-NEXT:    [[TMP663:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1603:%.*]] = zext i16 [[TMP663]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1604:%.*]] = icmp eq i32 [[CONV1602]], [[CONV1603]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1604]], label [[COND_TRUE1606:%.*]], label [[COND_FALSE1608:%.*]]
// SIMD-ONLY0:       cond.true1606:
// SIMD-ONLY0-NEXT:    [[TMP664:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1607:%.*]] = zext i16 [[TMP664]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1610:%.*]]
// SIMD-ONLY0:       cond.false1608:
// SIMD-ONLY0-NEXT:    [[TMP665:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1609:%.*]] = zext i16 [[TMP665]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1610]]
// SIMD-ONLY0:       cond.end1610:
// SIMD-ONLY0-NEXT:    [[COND1611:%.*]] = phi i32 [ [[CONV1607]], [[COND_TRUE1606]] ], [ [[CONV1609]], [[COND_FALSE1608]] ]
// SIMD-ONLY0-NEXT:    [[CONV1612:%.*]] = trunc i32 [[COND1611]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1612]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP666:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1613:%.*]] = zext i16 [[TMP666]] to i32
// SIMD-ONLY0-NEXT:    [[TMP667:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1614:%.*]] = zext i16 [[TMP667]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1615:%.*]] = icmp eq i32 [[CONV1613]], [[CONV1614]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1615]], label [[IF_THEN1617:%.*]], label [[IF_END1618:%.*]]
// SIMD-ONLY0:       if.then1617:
// SIMD-ONLY0-NEXT:    [[TMP668:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP668]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1618]]
// SIMD-ONLY0:       if.end1618:
// SIMD-ONLY0-NEXT:    [[TMP669:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1619:%.*]] = zext i16 [[TMP669]] to i32
// SIMD-ONLY0-NEXT:    [[TMP670:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1620:%.*]] = zext i16 [[TMP670]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1621:%.*]] = icmp eq i32 [[CONV1619]], [[CONV1620]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1621]], label [[IF_THEN1623:%.*]], label [[IF_END1624:%.*]]
// SIMD-ONLY0:       if.then1623:
// SIMD-ONLY0-NEXT:    [[TMP671:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP671]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1624]]
// SIMD-ONLY0:       if.end1624:
// SIMD-ONLY0-NEXT:    [[TMP672:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1625:%.*]] = sext i16 [[TMP672]] to i32
// SIMD-ONLY0-NEXT:    [[TMP673:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1626:%.*]] = sext i16 [[TMP673]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1627:%.*]] = icmp sgt i32 [[CONV1625]], [[CONV1626]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1627]], label [[COND_TRUE1629:%.*]], label [[COND_FALSE1631:%.*]]
// SIMD-ONLY0:       cond.true1629:
// SIMD-ONLY0-NEXT:    [[TMP674:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1630:%.*]] = sext i16 [[TMP674]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1633:%.*]]
// SIMD-ONLY0:       cond.false1631:
// SIMD-ONLY0-NEXT:    [[TMP675:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1632:%.*]] = sext i16 [[TMP675]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1633]]
// SIMD-ONLY0:       cond.end1633:
// SIMD-ONLY0-NEXT:    [[COND1634:%.*]] = phi i32 [ [[CONV1630]], [[COND_TRUE1629]] ], [ [[CONV1632]], [[COND_FALSE1631]] ]
// SIMD-ONLY0-NEXT:    [[CONV1635:%.*]] = trunc i32 [[COND1634]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1635]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP676:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1636:%.*]] = sext i16 [[TMP676]] to i32
// SIMD-ONLY0-NEXT:    [[TMP677:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1637:%.*]] = sext i16 [[TMP677]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1638:%.*]] = icmp slt i32 [[CONV1636]], [[CONV1637]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1638]], label [[COND_TRUE1640:%.*]], label [[COND_FALSE1642:%.*]]
// SIMD-ONLY0:       cond.true1640:
// SIMD-ONLY0-NEXT:    [[TMP678:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1641:%.*]] = sext i16 [[TMP678]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1644:%.*]]
// SIMD-ONLY0:       cond.false1642:
// SIMD-ONLY0-NEXT:    [[TMP679:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1643:%.*]] = sext i16 [[TMP679]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1644]]
// SIMD-ONLY0:       cond.end1644:
// SIMD-ONLY0-NEXT:    [[COND1645:%.*]] = phi i32 [ [[CONV1641]], [[COND_TRUE1640]] ], [ [[CONV1643]], [[COND_FALSE1642]] ]
// SIMD-ONLY0-NEXT:    [[CONV1646:%.*]] = trunc i32 [[COND1645]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1646]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP680:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1647:%.*]] = sext i16 [[TMP680]] to i32
// SIMD-ONLY0-NEXT:    [[TMP681:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1648:%.*]] = sext i16 [[TMP681]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1649:%.*]] = icmp sgt i32 [[CONV1647]], [[CONV1648]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1649]], label [[COND_TRUE1651:%.*]], label [[COND_FALSE1653:%.*]]
// SIMD-ONLY0:       cond.true1651:
// SIMD-ONLY0-NEXT:    [[TMP682:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1652:%.*]] = sext i16 [[TMP682]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1655:%.*]]
// SIMD-ONLY0:       cond.false1653:
// SIMD-ONLY0-NEXT:    [[TMP683:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1654:%.*]] = sext i16 [[TMP683]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1655]]
// SIMD-ONLY0:       cond.end1655:
// SIMD-ONLY0-NEXT:    [[COND1656:%.*]] = phi i32 [ [[CONV1652]], [[COND_TRUE1651]] ], [ [[CONV1654]], [[COND_FALSE1653]] ]
// SIMD-ONLY0-NEXT:    [[CONV1657:%.*]] = trunc i32 [[COND1656]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1657]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP684:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1658:%.*]] = sext i16 [[TMP684]] to i32
// SIMD-ONLY0-NEXT:    [[TMP685:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1659:%.*]] = sext i16 [[TMP685]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1660:%.*]] = icmp slt i32 [[CONV1658]], [[CONV1659]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1660]], label [[COND_TRUE1662:%.*]], label [[COND_FALSE1664:%.*]]
// SIMD-ONLY0:       cond.true1662:
// SIMD-ONLY0-NEXT:    [[TMP686:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1663:%.*]] = sext i16 [[TMP686]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1666:%.*]]
// SIMD-ONLY0:       cond.false1664:
// SIMD-ONLY0-NEXT:    [[TMP687:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1665:%.*]] = sext i16 [[TMP687]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1666]]
// SIMD-ONLY0:       cond.end1666:
// SIMD-ONLY0-NEXT:    [[COND1667:%.*]] = phi i32 [ [[CONV1663]], [[COND_TRUE1662]] ], [ [[CONV1665]], [[COND_FALSE1664]] ]
// SIMD-ONLY0-NEXT:    [[CONV1668:%.*]] = trunc i32 [[COND1667]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1668]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP688:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1669:%.*]] = sext i16 [[TMP688]] to i32
// SIMD-ONLY0-NEXT:    [[TMP689:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1670:%.*]] = sext i16 [[TMP689]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1671:%.*]] = icmp sgt i32 [[CONV1669]], [[CONV1670]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1671]], label [[IF_THEN1673:%.*]], label [[IF_END1674:%.*]]
// SIMD-ONLY0:       if.then1673:
// SIMD-ONLY0-NEXT:    [[TMP690:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP690]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1674]]
// SIMD-ONLY0:       if.end1674:
// SIMD-ONLY0-NEXT:    [[TMP691:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1675:%.*]] = sext i16 [[TMP691]] to i32
// SIMD-ONLY0-NEXT:    [[TMP692:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1676:%.*]] = sext i16 [[TMP692]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1677:%.*]] = icmp slt i32 [[CONV1675]], [[CONV1676]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1677]], label [[IF_THEN1679:%.*]], label [[IF_END1680:%.*]]
// SIMD-ONLY0:       if.then1679:
// SIMD-ONLY0-NEXT:    [[TMP693:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP693]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1680]]
// SIMD-ONLY0:       if.end1680:
// SIMD-ONLY0-NEXT:    [[TMP694:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1681:%.*]] = sext i16 [[TMP694]] to i32
// SIMD-ONLY0-NEXT:    [[TMP695:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1682:%.*]] = sext i16 [[TMP695]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1683:%.*]] = icmp sgt i32 [[CONV1681]], [[CONV1682]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1683]], label [[IF_THEN1685:%.*]], label [[IF_END1686:%.*]]
// SIMD-ONLY0:       if.then1685:
// SIMD-ONLY0-NEXT:    [[TMP696:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP696]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1686]]
// SIMD-ONLY0:       if.end1686:
// SIMD-ONLY0-NEXT:    [[TMP697:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1687:%.*]] = sext i16 [[TMP697]] to i32
// SIMD-ONLY0-NEXT:    [[TMP698:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1688:%.*]] = sext i16 [[TMP698]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1689:%.*]] = icmp slt i32 [[CONV1687]], [[CONV1688]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1689]], label [[IF_THEN1691:%.*]], label [[IF_END1692:%.*]]
// SIMD-ONLY0:       if.then1691:
// SIMD-ONLY0-NEXT:    [[TMP699:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP699]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1692]]
// SIMD-ONLY0:       if.end1692:
// SIMD-ONLY0-NEXT:    [[TMP700:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1693:%.*]] = sext i16 [[TMP700]] to i32
// SIMD-ONLY0-NEXT:    [[TMP701:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1694:%.*]] = sext i16 [[TMP701]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1695:%.*]] = icmp eq i32 [[CONV1693]], [[CONV1694]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1695]], label [[COND_TRUE1697:%.*]], label [[COND_FALSE1699:%.*]]
// SIMD-ONLY0:       cond.true1697:
// SIMD-ONLY0-NEXT:    [[TMP702:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1698:%.*]] = sext i16 [[TMP702]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1701:%.*]]
// SIMD-ONLY0:       cond.false1699:
// SIMD-ONLY0-NEXT:    [[TMP703:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1700:%.*]] = sext i16 [[TMP703]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1701]]
// SIMD-ONLY0:       cond.end1701:
// SIMD-ONLY0-NEXT:    [[COND1702:%.*]] = phi i32 [ [[CONV1698]], [[COND_TRUE1697]] ], [ [[CONV1700]], [[COND_FALSE1699]] ]
// SIMD-ONLY0-NEXT:    [[CONV1703:%.*]] = trunc i32 [[COND1702]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1703]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP704:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1704:%.*]] = sext i16 [[TMP704]] to i32
// SIMD-ONLY0-NEXT:    [[TMP705:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1705:%.*]] = sext i16 [[TMP705]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1706:%.*]] = icmp eq i32 [[CONV1704]], [[CONV1705]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1706]], label [[COND_TRUE1708:%.*]], label [[COND_FALSE1710:%.*]]
// SIMD-ONLY0:       cond.true1708:
// SIMD-ONLY0-NEXT:    [[TMP706:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1709:%.*]] = sext i16 [[TMP706]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1712:%.*]]
// SIMD-ONLY0:       cond.false1710:
// SIMD-ONLY0-NEXT:    [[TMP707:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1711:%.*]] = sext i16 [[TMP707]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1712]]
// SIMD-ONLY0:       cond.end1712:
// SIMD-ONLY0-NEXT:    [[COND1713:%.*]] = phi i32 [ [[CONV1709]], [[COND_TRUE1708]] ], [ [[CONV1711]], [[COND_FALSE1710]] ]
// SIMD-ONLY0-NEXT:    [[CONV1714:%.*]] = trunc i32 [[COND1713]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1714]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP708:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1715:%.*]] = sext i16 [[TMP708]] to i32
// SIMD-ONLY0-NEXT:    [[TMP709:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1716:%.*]] = sext i16 [[TMP709]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1717:%.*]] = icmp eq i32 [[CONV1715]], [[CONV1716]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1717]], label [[IF_THEN1719:%.*]], label [[IF_END1720:%.*]]
// SIMD-ONLY0:       if.then1719:
// SIMD-ONLY0-NEXT:    [[TMP710:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP710]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1720]]
// SIMD-ONLY0:       if.end1720:
// SIMD-ONLY0-NEXT:    [[TMP711:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1721:%.*]] = sext i16 [[TMP711]] to i32
// SIMD-ONLY0-NEXT:    [[TMP712:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1722:%.*]] = sext i16 [[TMP712]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1723:%.*]] = icmp eq i32 [[CONV1721]], [[CONV1722]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1723]], label [[IF_THEN1725:%.*]], label [[IF_END1726:%.*]]
// SIMD-ONLY0:       if.then1725:
// SIMD-ONLY0-NEXT:    [[TMP713:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP713]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1726]]
// SIMD-ONLY0:       if.end1726:
// SIMD-ONLY0-NEXT:    [[TMP714:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1727:%.*]] = zext i16 [[TMP714]] to i32
// SIMD-ONLY0-NEXT:    [[TMP715:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1728:%.*]] = zext i16 [[TMP715]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1729:%.*]] = icmp sgt i32 [[CONV1727]], [[CONV1728]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1729]], label [[COND_TRUE1731:%.*]], label [[COND_FALSE1733:%.*]]
// SIMD-ONLY0:       cond.true1731:
// SIMD-ONLY0-NEXT:    [[TMP716:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1732:%.*]] = zext i16 [[TMP716]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1735:%.*]]
// SIMD-ONLY0:       cond.false1733:
// SIMD-ONLY0-NEXT:    [[TMP717:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1734:%.*]] = zext i16 [[TMP717]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1735]]
// SIMD-ONLY0:       cond.end1735:
// SIMD-ONLY0-NEXT:    [[COND1736:%.*]] = phi i32 [ [[CONV1732]], [[COND_TRUE1731]] ], [ [[CONV1734]], [[COND_FALSE1733]] ]
// SIMD-ONLY0-NEXT:    [[CONV1737:%.*]] = trunc i32 [[COND1736]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1737]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP718:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1738:%.*]] = zext i16 [[TMP718]] to i32
// SIMD-ONLY0-NEXT:    [[TMP719:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1739:%.*]] = zext i16 [[TMP719]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1740:%.*]] = icmp slt i32 [[CONV1738]], [[CONV1739]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1740]], label [[COND_TRUE1742:%.*]], label [[COND_FALSE1744:%.*]]
// SIMD-ONLY0:       cond.true1742:
// SIMD-ONLY0-NEXT:    [[TMP720:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1743:%.*]] = zext i16 [[TMP720]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1746:%.*]]
// SIMD-ONLY0:       cond.false1744:
// SIMD-ONLY0-NEXT:    [[TMP721:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1745:%.*]] = zext i16 [[TMP721]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1746]]
// SIMD-ONLY0:       cond.end1746:
// SIMD-ONLY0-NEXT:    [[COND1747:%.*]] = phi i32 [ [[CONV1743]], [[COND_TRUE1742]] ], [ [[CONV1745]], [[COND_FALSE1744]] ]
// SIMD-ONLY0-NEXT:    [[CONV1748:%.*]] = trunc i32 [[COND1747]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1748]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP722:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1749:%.*]] = zext i16 [[TMP722]] to i32
// SIMD-ONLY0-NEXT:    [[TMP723:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1750:%.*]] = zext i16 [[TMP723]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1751:%.*]] = icmp sgt i32 [[CONV1749]], [[CONV1750]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1751]], label [[COND_TRUE1753:%.*]], label [[COND_FALSE1755:%.*]]
// SIMD-ONLY0:       cond.true1753:
// SIMD-ONLY0-NEXT:    [[TMP724:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1754:%.*]] = zext i16 [[TMP724]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1757:%.*]]
// SIMD-ONLY0:       cond.false1755:
// SIMD-ONLY0-NEXT:    [[TMP725:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1756:%.*]] = zext i16 [[TMP725]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1757]]
// SIMD-ONLY0:       cond.end1757:
// SIMD-ONLY0-NEXT:    [[COND1758:%.*]] = phi i32 [ [[CONV1754]], [[COND_TRUE1753]] ], [ [[CONV1756]], [[COND_FALSE1755]] ]
// SIMD-ONLY0-NEXT:    [[CONV1759:%.*]] = trunc i32 [[COND1758]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1759]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP726:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1760:%.*]] = zext i16 [[TMP726]] to i32
// SIMD-ONLY0-NEXT:    [[TMP727:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1761:%.*]] = zext i16 [[TMP727]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1762:%.*]] = icmp slt i32 [[CONV1760]], [[CONV1761]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1762]], label [[COND_TRUE1764:%.*]], label [[COND_FALSE1766:%.*]]
// SIMD-ONLY0:       cond.true1764:
// SIMD-ONLY0-NEXT:    [[TMP728:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1765:%.*]] = zext i16 [[TMP728]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1768:%.*]]
// SIMD-ONLY0:       cond.false1766:
// SIMD-ONLY0-NEXT:    [[TMP729:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1767:%.*]] = zext i16 [[TMP729]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1768]]
// SIMD-ONLY0:       cond.end1768:
// SIMD-ONLY0-NEXT:    [[COND1769:%.*]] = phi i32 [ [[CONV1765]], [[COND_TRUE1764]] ], [ [[CONV1767]], [[COND_FALSE1766]] ]
// SIMD-ONLY0-NEXT:    [[CONV1770:%.*]] = trunc i32 [[COND1769]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1770]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP730:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1771:%.*]] = zext i16 [[TMP730]] to i32
// SIMD-ONLY0-NEXT:    [[TMP731:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1772:%.*]] = zext i16 [[TMP731]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1773:%.*]] = icmp sgt i32 [[CONV1771]], [[CONV1772]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1773]], label [[IF_THEN1775:%.*]], label [[IF_END1776:%.*]]
// SIMD-ONLY0:       if.then1775:
// SIMD-ONLY0-NEXT:    [[TMP732:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP732]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1776]]
// SIMD-ONLY0:       if.end1776:
// SIMD-ONLY0-NEXT:    [[TMP733:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1777:%.*]] = zext i16 [[TMP733]] to i32
// SIMD-ONLY0-NEXT:    [[TMP734:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1778:%.*]] = zext i16 [[TMP734]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1779:%.*]] = icmp slt i32 [[CONV1777]], [[CONV1778]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1779]], label [[IF_THEN1781:%.*]], label [[IF_END1782:%.*]]
// SIMD-ONLY0:       if.then1781:
// SIMD-ONLY0-NEXT:    [[TMP735:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP735]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1782]]
// SIMD-ONLY0:       if.end1782:
// SIMD-ONLY0-NEXT:    [[TMP736:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1783:%.*]] = zext i16 [[TMP736]] to i32
// SIMD-ONLY0-NEXT:    [[TMP737:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1784:%.*]] = zext i16 [[TMP737]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1785:%.*]] = icmp sgt i32 [[CONV1783]], [[CONV1784]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1785]], label [[IF_THEN1787:%.*]], label [[IF_END1788:%.*]]
// SIMD-ONLY0:       if.then1787:
// SIMD-ONLY0-NEXT:    [[TMP738:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP738]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1788]]
// SIMD-ONLY0:       if.end1788:
// SIMD-ONLY0-NEXT:    [[TMP739:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1789:%.*]] = zext i16 [[TMP739]] to i32
// SIMD-ONLY0-NEXT:    [[TMP740:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1790:%.*]] = zext i16 [[TMP740]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1791:%.*]] = icmp slt i32 [[CONV1789]], [[CONV1790]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1791]], label [[IF_THEN1793:%.*]], label [[IF_END1794:%.*]]
// SIMD-ONLY0:       if.then1793:
// SIMD-ONLY0-NEXT:    [[TMP741:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP741]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1794]]
// SIMD-ONLY0:       if.end1794:
// SIMD-ONLY0-NEXT:    [[TMP742:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1795:%.*]] = zext i16 [[TMP742]] to i32
// SIMD-ONLY0-NEXT:    [[TMP743:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1796:%.*]] = zext i16 [[TMP743]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1797:%.*]] = icmp eq i32 [[CONV1795]], [[CONV1796]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1797]], label [[COND_TRUE1799:%.*]], label [[COND_FALSE1801:%.*]]
// SIMD-ONLY0:       cond.true1799:
// SIMD-ONLY0-NEXT:    [[TMP744:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1800:%.*]] = zext i16 [[TMP744]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1803:%.*]]
// SIMD-ONLY0:       cond.false1801:
// SIMD-ONLY0-NEXT:    [[TMP745:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1802:%.*]] = zext i16 [[TMP745]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1803]]
// SIMD-ONLY0:       cond.end1803:
// SIMD-ONLY0-NEXT:    [[COND1804:%.*]] = phi i32 [ [[CONV1800]], [[COND_TRUE1799]] ], [ [[CONV1802]], [[COND_FALSE1801]] ]
// SIMD-ONLY0-NEXT:    [[CONV1805:%.*]] = trunc i32 [[COND1804]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1805]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP746:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1806:%.*]] = zext i16 [[TMP746]] to i32
// SIMD-ONLY0-NEXT:    [[TMP747:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1807:%.*]] = zext i16 [[TMP747]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1808:%.*]] = icmp eq i32 [[CONV1806]], [[CONV1807]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1808]], label [[COND_TRUE1810:%.*]], label [[COND_FALSE1812:%.*]]
// SIMD-ONLY0:       cond.true1810:
// SIMD-ONLY0-NEXT:    [[TMP748:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1811:%.*]] = zext i16 [[TMP748]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1814:%.*]]
// SIMD-ONLY0:       cond.false1812:
// SIMD-ONLY0-NEXT:    [[TMP749:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1813:%.*]] = zext i16 [[TMP749]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1814]]
// SIMD-ONLY0:       cond.end1814:
// SIMD-ONLY0-NEXT:    [[COND1815:%.*]] = phi i32 [ [[CONV1811]], [[COND_TRUE1810]] ], [ [[CONV1813]], [[COND_FALSE1812]] ]
// SIMD-ONLY0-NEXT:    [[CONV1816:%.*]] = trunc i32 [[COND1815]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1816]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP750:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1817:%.*]] = zext i16 [[TMP750]] to i32
// SIMD-ONLY0-NEXT:    [[TMP751:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1818:%.*]] = zext i16 [[TMP751]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1819:%.*]] = icmp eq i32 [[CONV1817]], [[CONV1818]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1819]], label [[IF_THEN1821:%.*]], label [[IF_END1822:%.*]]
// SIMD-ONLY0:       if.then1821:
// SIMD-ONLY0-NEXT:    [[TMP752:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP752]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1822]]
// SIMD-ONLY0:       if.end1822:
// SIMD-ONLY0-NEXT:    [[TMP753:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1823:%.*]] = zext i16 [[TMP753]] to i32
// SIMD-ONLY0-NEXT:    [[TMP754:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1824:%.*]] = zext i16 [[TMP754]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1825:%.*]] = icmp eq i32 [[CONV1823]], [[CONV1824]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1825]], label [[IF_THEN1827:%.*]], label [[IF_END1828:%.*]]
// SIMD-ONLY0:       if.then1827:
// SIMD-ONLY0-NEXT:    [[TMP755:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP755]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1828]]
// SIMD-ONLY0:       if.end1828:
// SIMD-ONLY0-NEXT:    [[TMP756:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1829:%.*]] = sext i16 [[TMP756]] to i32
// SIMD-ONLY0-NEXT:    [[TMP757:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1830:%.*]] = sext i16 [[TMP757]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1831:%.*]] = icmp sgt i32 [[CONV1829]], [[CONV1830]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1831]], label [[COND_TRUE1833:%.*]], label [[COND_FALSE1835:%.*]]
// SIMD-ONLY0:       cond.true1833:
// SIMD-ONLY0-NEXT:    [[TMP758:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1834:%.*]] = sext i16 [[TMP758]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1837:%.*]]
// SIMD-ONLY0:       cond.false1835:
// SIMD-ONLY0-NEXT:    [[TMP759:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1836:%.*]] = sext i16 [[TMP759]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1837]]
// SIMD-ONLY0:       cond.end1837:
// SIMD-ONLY0-NEXT:    [[COND1838:%.*]] = phi i32 [ [[CONV1834]], [[COND_TRUE1833]] ], [ [[CONV1836]], [[COND_FALSE1835]] ]
// SIMD-ONLY0-NEXT:    [[CONV1839:%.*]] = trunc i32 [[COND1838]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1839]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP760:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1840:%.*]] = sext i16 [[TMP760]] to i32
// SIMD-ONLY0-NEXT:    [[TMP761:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1841:%.*]] = sext i16 [[TMP761]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1842:%.*]] = icmp slt i32 [[CONV1840]], [[CONV1841]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1842]], label [[COND_TRUE1844:%.*]], label [[COND_FALSE1846:%.*]]
// SIMD-ONLY0:       cond.true1844:
// SIMD-ONLY0-NEXT:    [[TMP762:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1845:%.*]] = sext i16 [[TMP762]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1848:%.*]]
// SIMD-ONLY0:       cond.false1846:
// SIMD-ONLY0-NEXT:    [[TMP763:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1847:%.*]] = sext i16 [[TMP763]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1848]]
// SIMD-ONLY0:       cond.end1848:
// SIMD-ONLY0-NEXT:    [[COND1849:%.*]] = phi i32 [ [[CONV1845]], [[COND_TRUE1844]] ], [ [[CONV1847]], [[COND_FALSE1846]] ]
// SIMD-ONLY0-NEXT:    [[CONV1850:%.*]] = trunc i32 [[COND1849]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1850]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP764:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1851:%.*]] = sext i16 [[TMP764]] to i32
// SIMD-ONLY0-NEXT:    [[TMP765:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1852:%.*]] = sext i16 [[TMP765]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1853:%.*]] = icmp sgt i32 [[CONV1851]], [[CONV1852]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1853]], label [[COND_TRUE1855:%.*]], label [[COND_FALSE1857:%.*]]
// SIMD-ONLY0:       cond.true1855:
// SIMD-ONLY0-NEXT:    [[TMP766:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1856:%.*]] = sext i16 [[TMP766]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1859:%.*]]
// SIMD-ONLY0:       cond.false1857:
// SIMD-ONLY0-NEXT:    [[TMP767:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1858:%.*]] = sext i16 [[TMP767]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1859]]
// SIMD-ONLY0:       cond.end1859:
// SIMD-ONLY0-NEXT:    [[COND1860:%.*]] = phi i32 [ [[CONV1856]], [[COND_TRUE1855]] ], [ [[CONV1858]], [[COND_FALSE1857]] ]
// SIMD-ONLY0-NEXT:    [[CONV1861:%.*]] = trunc i32 [[COND1860]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1861]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP768:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1862:%.*]] = sext i16 [[TMP768]] to i32
// SIMD-ONLY0-NEXT:    [[TMP769:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1863:%.*]] = sext i16 [[TMP769]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1864:%.*]] = icmp slt i32 [[CONV1862]], [[CONV1863]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1864]], label [[COND_TRUE1866:%.*]], label [[COND_FALSE1868:%.*]]
// SIMD-ONLY0:       cond.true1866:
// SIMD-ONLY0-NEXT:    [[TMP770:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1867:%.*]] = sext i16 [[TMP770]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1870:%.*]]
// SIMD-ONLY0:       cond.false1868:
// SIMD-ONLY0-NEXT:    [[TMP771:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1869:%.*]] = sext i16 [[TMP771]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1870]]
// SIMD-ONLY0:       cond.end1870:
// SIMD-ONLY0-NEXT:    [[COND1871:%.*]] = phi i32 [ [[CONV1867]], [[COND_TRUE1866]] ], [ [[CONV1869]], [[COND_FALSE1868]] ]
// SIMD-ONLY0-NEXT:    [[CONV1872:%.*]] = trunc i32 [[COND1871]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1872]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP772:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1873:%.*]] = sext i16 [[TMP772]] to i32
// SIMD-ONLY0-NEXT:    [[TMP773:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1874:%.*]] = sext i16 [[TMP773]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1875:%.*]] = icmp sgt i32 [[CONV1873]], [[CONV1874]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1875]], label [[IF_THEN1877:%.*]], label [[IF_END1878:%.*]]
// SIMD-ONLY0:       if.then1877:
// SIMD-ONLY0-NEXT:    [[TMP774:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP774]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1878]]
// SIMD-ONLY0:       if.end1878:
// SIMD-ONLY0-NEXT:    [[TMP775:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1879:%.*]] = sext i16 [[TMP775]] to i32
// SIMD-ONLY0-NEXT:    [[TMP776:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1880:%.*]] = sext i16 [[TMP776]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1881:%.*]] = icmp slt i32 [[CONV1879]], [[CONV1880]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1881]], label [[IF_THEN1883:%.*]], label [[IF_END1884:%.*]]
// SIMD-ONLY0:       if.then1883:
// SIMD-ONLY0-NEXT:    [[TMP777:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP777]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1884]]
// SIMD-ONLY0:       if.end1884:
// SIMD-ONLY0-NEXT:    [[TMP778:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1885:%.*]] = sext i16 [[TMP778]] to i32
// SIMD-ONLY0-NEXT:    [[TMP779:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1886:%.*]] = sext i16 [[TMP779]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1887:%.*]] = icmp sgt i32 [[CONV1885]], [[CONV1886]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1887]], label [[IF_THEN1889:%.*]], label [[IF_END1890:%.*]]
// SIMD-ONLY0:       if.then1889:
// SIMD-ONLY0-NEXT:    [[TMP780:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP780]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1890]]
// SIMD-ONLY0:       if.end1890:
// SIMD-ONLY0-NEXT:    [[TMP781:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1891:%.*]] = sext i16 [[TMP781]] to i32
// SIMD-ONLY0-NEXT:    [[TMP782:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1892:%.*]] = sext i16 [[TMP782]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1893:%.*]] = icmp slt i32 [[CONV1891]], [[CONV1892]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1893]], label [[IF_THEN1895:%.*]], label [[IF_END1896:%.*]]
// SIMD-ONLY0:       if.then1895:
// SIMD-ONLY0-NEXT:    [[TMP783:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP783]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1896]]
// SIMD-ONLY0:       if.end1896:
// SIMD-ONLY0-NEXT:    [[TMP784:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1897:%.*]] = sext i16 [[TMP784]] to i32
// SIMD-ONLY0-NEXT:    [[TMP785:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1898:%.*]] = sext i16 [[TMP785]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1899:%.*]] = icmp eq i32 [[CONV1897]], [[CONV1898]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1899]], label [[COND_TRUE1901:%.*]], label [[COND_FALSE1903:%.*]]
// SIMD-ONLY0:       cond.true1901:
// SIMD-ONLY0-NEXT:    [[TMP786:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1902:%.*]] = sext i16 [[TMP786]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1905:%.*]]
// SIMD-ONLY0:       cond.false1903:
// SIMD-ONLY0-NEXT:    [[TMP787:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1904:%.*]] = sext i16 [[TMP787]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1905]]
// SIMD-ONLY0:       cond.end1905:
// SIMD-ONLY0-NEXT:    [[COND1906:%.*]] = phi i32 [ [[CONV1902]], [[COND_TRUE1901]] ], [ [[CONV1904]], [[COND_FALSE1903]] ]
// SIMD-ONLY0-NEXT:    [[CONV1907:%.*]] = trunc i32 [[COND1906]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1907]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP788:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1908:%.*]] = sext i16 [[TMP788]] to i32
// SIMD-ONLY0-NEXT:    [[TMP789:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1909:%.*]] = sext i16 [[TMP789]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1910:%.*]] = icmp eq i32 [[CONV1908]], [[CONV1909]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1910]], label [[COND_TRUE1912:%.*]], label [[COND_FALSE1914:%.*]]
// SIMD-ONLY0:       cond.true1912:
// SIMD-ONLY0-NEXT:    [[TMP790:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1913:%.*]] = sext i16 [[TMP790]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1916:%.*]]
// SIMD-ONLY0:       cond.false1914:
// SIMD-ONLY0-NEXT:    [[TMP791:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1915:%.*]] = sext i16 [[TMP791]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1916]]
// SIMD-ONLY0:       cond.end1916:
// SIMD-ONLY0-NEXT:    [[COND1917:%.*]] = phi i32 [ [[CONV1913]], [[COND_TRUE1912]] ], [ [[CONV1915]], [[COND_FALSE1914]] ]
// SIMD-ONLY0-NEXT:    [[CONV1918:%.*]] = trunc i32 [[COND1917]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1918]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP792:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1919:%.*]] = sext i16 [[TMP792]] to i32
// SIMD-ONLY0-NEXT:    [[TMP793:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1920:%.*]] = sext i16 [[TMP793]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1921:%.*]] = icmp eq i32 [[CONV1919]], [[CONV1920]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1921]], label [[IF_THEN1923:%.*]], label [[IF_END1924:%.*]]
// SIMD-ONLY0:       if.then1923:
// SIMD-ONLY0-NEXT:    [[TMP794:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP794]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1924]]
// SIMD-ONLY0:       if.end1924:
// SIMD-ONLY0-NEXT:    [[TMP795:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1925:%.*]] = sext i16 [[TMP795]] to i32
// SIMD-ONLY0-NEXT:    [[TMP796:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1926:%.*]] = sext i16 [[TMP796]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1927:%.*]] = icmp eq i32 [[CONV1925]], [[CONV1926]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1927]], label [[IF_THEN1929:%.*]], label [[IF_END1930:%.*]]
// SIMD-ONLY0:       if.then1929:
// SIMD-ONLY0-NEXT:    [[TMP797:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP797]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1930]]
// SIMD-ONLY0:       if.end1930:
// SIMD-ONLY0-NEXT:    [[TMP798:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1931:%.*]] = zext i16 [[TMP798]] to i32
// SIMD-ONLY0-NEXT:    [[TMP799:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1932:%.*]] = zext i16 [[TMP799]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1933:%.*]] = icmp sgt i32 [[CONV1931]], [[CONV1932]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1933]], label [[COND_TRUE1935:%.*]], label [[COND_FALSE1937:%.*]]
// SIMD-ONLY0:       cond.true1935:
// SIMD-ONLY0-NEXT:    [[TMP800:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1936:%.*]] = zext i16 [[TMP800]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1939:%.*]]
// SIMD-ONLY0:       cond.false1937:
// SIMD-ONLY0-NEXT:    [[TMP801:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1938:%.*]] = zext i16 [[TMP801]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1939]]
// SIMD-ONLY0:       cond.end1939:
// SIMD-ONLY0-NEXT:    [[COND1940:%.*]] = phi i32 [ [[CONV1936]], [[COND_TRUE1935]] ], [ [[CONV1938]], [[COND_FALSE1937]] ]
// SIMD-ONLY0-NEXT:    [[CONV1941:%.*]] = trunc i32 [[COND1940]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1941]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP802:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1942:%.*]] = zext i16 [[TMP802]] to i32
// SIMD-ONLY0-NEXT:    [[TMP803:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1943:%.*]] = zext i16 [[TMP803]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1944:%.*]] = icmp slt i32 [[CONV1942]], [[CONV1943]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1944]], label [[COND_TRUE1946:%.*]], label [[COND_FALSE1948:%.*]]
// SIMD-ONLY0:       cond.true1946:
// SIMD-ONLY0-NEXT:    [[TMP804:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1947:%.*]] = zext i16 [[TMP804]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1950:%.*]]
// SIMD-ONLY0:       cond.false1948:
// SIMD-ONLY0-NEXT:    [[TMP805:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1949:%.*]] = zext i16 [[TMP805]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1950]]
// SIMD-ONLY0:       cond.end1950:
// SIMD-ONLY0-NEXT:    [[COND1951:%.*]] = phi i32 [ [[CONV1947]], [[COND_TRUE1946]] ], [ [[CONV1949]], [[COND_FALSE1948]] ]
// SIMD-ONLY0-NEXT:    [[CONV1952:%.*]] = trunc i32 [[COND1951]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1952]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP806:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1953:%.*]] = zext i16 [[TMP806]] to i32
// SIMD-ONLY0-NEXT:    [[TMP807:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1954:%.*]] = zext i16 [[TMP807]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1955:%.*]] = icmp sgt i32 [[CONV1953]], [[CONV1954]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1955]], label [[COND_TRUE1957:%.*]], label [[COND_FALSE1959:%.*]]
// SIMD-ONLY0:       cond.true1957:
// SIMD-ONLY0-NEXT:    [[TMP808:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1958:%.*]] = zext i16 [[TMP808]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1961:%.*]]
// SIMD-ONLY0:       cond.false1959:
// SIMD-ONLY0-NEXT:    [[TMP809:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1960:%.*]] = zext i16 [[TMP809]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1961]]
// SIMD-ONLY0:       cond.end1961:
// SIMD-ONLY0-NEXT:    [[COND1962:%.*]] = phi i32 [ [[CONV1958]], [[COND_TRUE1957]] ], [ [[CONV1960]], [[COND_FALSE1959]] ]
// SIMD-ONLY0-NEXT:    [[CONV1963:%.*]] = trunc i32 [[COND1962]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1963]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP810:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1964:%.*]] = zext i16 [[TMP810]] to i32
// SIMD-ONLY0-NEXT:    [[TMP811:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1965:%.*]] = zext i16 [[TMP811]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1966:%.*]] = icmp slt i32 [[CONV1964]], [[CONV1965]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1966]], label [[COND_TRUE1968:%.*]], label [[COND_FALSE1970:%.*]]
// SIMD-ONLY0:       cond.true1968:
// SIMD-ONLY0-NEXT:    [[TMP812:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1969:%.*]] = zext i16 [[TMP812]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1972:%.*]]
// SIMD-ONLY0:       cond.false1970:
// SIMD-ONLY0-NEXT:    [[TMP813:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1971:%.*]] = zext i16 [[TMP813]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END1972]]
// SIMD-ONLY0:       cond.end1972:
// SIMD-ONLY0-NEXT:    [[COND1973:%.*]] = phi i32 [ [[CONV1969]], [[COND_TRUE1968]] ], [ [[CONV1971]], [[COND_FALSE1970]] ]
// SIMD-ONLY0-NEXT:    [[CONV1974:%.*]] = trunc i32 [[COND1973]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1974]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP814:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1975:%.*]] = zext i16 [[TMP814]] to i32
// SIMD-ONLY0-NEXT:    [[TMP815:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1976:%.*]] = zext i16 [[TMP815]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1977:%.*]] = icmp sgt i32 [[CONV1975]], [[CONV1976]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1977]], label [[IF_THEN1979:%.*]], label [[IF_END1980:%.*]]
// SIMD-ONLY0:       if.then1979:
// SIMD-ONLY0-NEXT:    [[TMP816:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP816]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1980]]
// SIMD-ONLY0:       if.end1980:
// SIMD-ONLY0-NEXT:    [[TMP817:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1981:%.*]] = zext i16 [[TMP817]] to i32
// SIMD-ONLY0-NEXT:    [[TMP818:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1982:%.*]] = zext i16 [[TMP818]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1983:%.*]] = icmp slt i32 [[CONV1981]], [[CONV1982]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1983]], label [[IF_THEN1985:%.*]], label [[IF_END1986:%.*]]
// SIMD-ONLY0:       if.then1985:
// SIMD-ONLY0-NEXT:    [[TMP819:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP819]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1986]]
// SIMD-ONLY0:       if.end1986:
// SIMD-ONLY0-NEXT:    [[TMP820:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1987:%.*]] = zext i16 [[TMP820]] to i32
// SIMD-ONLY0-NEXT:    [[TMP821:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1988:%.*]] = zext i16 [[TMP821]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1989:%.*]] = icmp sgt i32 [[CONV1987]], [[CONV1988]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1989]], label [[IF_THEN1991:%.*]], label [[IF_END1992:%.*]]
// SIMD-ONLY0:       if.then1991:
// SIMD-ONLY0-NEXT:    [[TMP822:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP822]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1992]]
// SIMD-ONLY0:       if.end1992:
// SIMD-ONLY0-NEXT:    [[TMP823:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1993:%.*]] = zext i16 [[TMP823]] to i32
// SIMD-ONLY0-NEXT:    [[TMP824:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1994:%.*]] = zext i16 [[TMP824]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1995:%.*]] = icmp slt i32 [[CONV1993]], [[CONV1994]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1995]], label [[IF_THEN1997:%.*]], label [[IF_END1998:%.*]]
// SIMD-ONLY0:       if.then1997:
// SIMD-ONLY0-NEXT:    [[TMP825:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP825]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1998]]
// SIMD-ONLY0:       if.end1998:
// SIMD-ONLY0-NEXT:    [[TMP826:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1999:%.*]] = zext i16 [[TMP826]] to i32
// SIMD-ONLY0-NEXT:    [[TMP827:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2000:%.*]] = zext i16 [[TMP827]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2001:%.*]] = icmp eq i32 [[CONV1999]], [[CONV2000]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2001]], label [[COND_TRUE2003:%.*]], label [[COND_FALSE2005:%.*]]
// SIMD-ONLY0:       cond.true2003:
// SIMD-ONLY0-NEXT:    [[TMP828:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2004:%.*]] = zext i16 [[TMP828]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2007:%.*]]
// SIMD-ONLY0:       cond.false2005:
// SIMD-ONLY0-NEXT:    [[TMP829:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2006:%.*]] = zext i16 [[TMP829]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2007]]
// SIMD-ONLY0:       cond.end2007:
// SIMD-ONLY0-NEXT:    [[COND2008:%.*]] = phi i32 [ [[CONV2004]], [[COND_TRUE2003]] ], [ [[CONV2006]], [[COND_FALSE2005]] ]
// SIMD-ONLY0-NEXT:    [[CONV2009:%.*]] = trunc i32 [[COND2008]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2009]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP830:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2010:%.*]] = zext i16 [[TMP830]] to i32
// SIMD-ONLY0-NEXT:    [[TMP831:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2011:%.*]] = zext i16 [[TMP831]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2012:%.*]] = icmp eq i32 [[CONV2010]], [[CONV2011]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2012]], label [[COND_TRUE2014:%.*]], label [[COND_FALSE2016:%.*]]
// SIMD-ONLY0:       cond.true2014:
// SIMD-ONLY0-NEXT:    [[TMP832:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2015:%.*]] = zext i16 [[TMP832]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2018:%.*]]
// SIMD-ONLY0:       cond.false2016:
// SIMD-ONLY0-NEXT:    [[TMP833:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2017:%.*]] = zext i16 [[TMP833]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2018]]
// SIMD-ONLY0:       cond.end2018:
// SIMD-ONLY0-NEXT:    [[COND2019:%.*]] = phi i32 [ [[CONV2015]], [[COND_TRUE2014]] ], [ [[CONV2017]], [[COND_FALSE2016]] ]
// SIMD-ONLY0-NEXT:    [[CONV2020:%.*]] = trunc i32 [[COND2019]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2020]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP834:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2021:%.*]] = zext i16 [[TMP834]] to i32
// SIMD-ONLY0-NEXT:    [[TMP835:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2022:%.*]] = zext i16 [[TMP835]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2023:%.*]] = icmp eq i32 [[CONV2021]], [[CONV2022]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2023]], label [[IF_THEN2025:%.*]], label [[IF_END2026:%.*]]
// SIMD-ONLY0:       if.then2025:
// SIMD-ONLY0-NEXT:    [[TMP836:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP836]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2026]]
// SIMD-ONLY0:       if.end2026:
// SIMD-ONLY0-NEXT:    [[TMP837:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2027:%.*]] = zext i16 [[TMP837]] to i32
// SIMD-ONLY0-NEXT:    [[TMP838:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2028:%.*]] = zext i16 [[TMP838]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2029:%.*]] = icmp eq i32 [[CONV2027]], [[CONV2028]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2029]], label [[IF_THEN2031:%.*]], label [[IF_END2032:%.*]]
// SIMD-ONLY0:       if.then2031:
// SIMD-ONLY0-NEXT:    [[TMP839:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP839]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2032]]
// SIMD-ONLY0:       if.end2032:
// SIMD-ONLY0-NEXT:    [[TMP840:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2033:%.*]] = sext i16 [[TMP840]] to i32
// SIMD-ONLY0-NEXT:    [[TMP841:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2034:%.*]] = sext i16 [[TMP841]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2035:%.*]] = icmp sgt i32 [[CONV2033]], [[CONV2034]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2035]], label [[COND_TRUE2037:%.*]], label [[COND_FALSE2039:%.*]]
// SIMD-ONLY0:       cond.true2037:
// SIMD-ONLY0-NEXT:    [[TMP842:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2038:%.*]] = sext i16 [[TMP842]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2041:%.*]]
// SIMD-ONLY0:       cond.false2039:
// SIMD-ONLY0-NEXT:    [[TMP843:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2040:%.*]] = sext i16 [[TMP843]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2041]]
// SIMD-ONLY0:       cond.end2041:
// SIMD-ONLY0-NEXT:    [[COND2042:%.*]] = phi i32 [ [[CONV2038]], [[COND_TRUE2037]] ], [ [[CONV2040]], [[COND_FALSE2039]] ]
// SIMD-ONLY0-NEXT:    [[CONV2043:%.*]] = trunc i32 [[COND2042]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2043]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP844:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2044:%.*]] = sext i16 [[TMP844]] to i32
// SIMD-ONLY0-NEXT:    [[TMP845:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2045:%.*]] = sext i16 [[TMP845]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2046:%.*]] = icmp slt i32 [[CONV2044]], [[CONV2045]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2046]], label [[COND_TRUE2048:%.*]], label [[COND_FALSE2050:%.*]]
// SIMD-ONLY0:       cond.true2048:
// SIMD-ONLY0-NEXT:    [[TMP846:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2049:%.*]] = sext i16 [[TMP846]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2052:%.*]]
// SIMD-ONLY0:       cond.false2050:
// SIMD-ONLY0-NEXT:    [[TMP847:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2051:%.*]] = sext i16 [[TMP847]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2052]]
// SIMD-ONLY0:       cond.end2052:
// SIMD-ONLY0-NEXT:    [[COND2053:%.*]] = phi i32 [ [[CONV2049]], [[COND_TRUE2048]] ], [ [[CONV2051]], [[COND_FALSE2050]] ]
// SIMD-ONLY0-NEXT:    [[CONV2054:%.*]] = trunc i32 [[COND2053]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2054]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP848:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2055:%.*]] = sext i16 [[TMP848]] to i32
// SIMD-ONLY0-NEXT:    [[TMP849:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2056:%.*]] = sext i16 [[TMP849]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2057:%.*]] = icmp sgt i32 [[CONV2055]], [[CONV2056]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2057]], label [[COND_TRUE2059:%.*]], label [[COND_FALSE2061:%.*]]
// SIMD-ONLY0:       cond.true2059:
// SIMD-ONLY0-NEXT:    [[TMP850:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2060:%.*]] = sext i16 [[TMP850]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2063:%.*]]
// SIMD-ONLY0:       cond.false2061:
// SIMD-ONLY0-NEXT:    [[TMP851:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2062:%.*]] = sext i16 [[TMP851]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2063]]
// SIMD-ONLY0:       cond.end2063:
// SIMD-ONLY0-NEXT:    [[COND2064:%.*]] = phi i32 [ [[CONV2060]], [[COND_TRUE2059]] ], [ [[CONV2062]], [[COND_FALSE2061]] ]
// SIMD-ONLY0-NEXT:    [[CONV2065:%.*]] = trunc i32 [[COND2064]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2065]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP852:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2066:%.*]] = sext i16 [[TMP852]] to i32
// SIMD-ONLY0-NEXT:    [[TMP853:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2067:%.*]] = sext i16 [[TMP853]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2068:%.*]] = icmp slt i32 [[CONV2066]], [[CONV2067]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2068]], label [[COND_TRUE2070:%.*]], label [[COND_FALSE2072:%.*]]
// SIMD-ONLY0:       cond.true2070:
// SIMD-ONLY0-NEXT:    [[TMP854:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2071:%.*]] = sext i16 [[TMP854]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2074:%.*]]
// SIMD-ONLY0:       cond.false2072:
// SIMD-ONLY0-NEXT:    [[TMP855:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2073:%.*]] = sext i16 [[TMP855]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2074]]
// SIMD-ONLY0:       cond.end2074:
// SIMD-ONLY0-NEXT:    [[COND2075:%.*]] = phi i32 [ [[CONV2071]], [[COND_TRUE2070]] ], [ [[CONV2073]], [[COND_FALSE2072]] ]
// SIMD-ONLY0-NEXT:    [[CONV2076:%.*]] = trunc i32 [[COND2075]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2076]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP856:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2077:%.*]] = sext i16 [[TMP856]] to i32
// SIMD-ONLY0-NEXT:    [[TMP857:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2078:%.*]] = sext i16 [[TMP857]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2079:%.*]] = icmp sgt i32 [[CONV2077]], [[CONV2078]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2079]], label [[IF_THEN2081:%.*]], label [[IF_END2082:%.*]]
// SIMD-ONLY0:       if.then2081:
// SIMD-ONLY0-NEXT:    [[TMP858:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP858]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2082]]
// SIMD-ONLY0:       if.end2082:
// SIMD-ONLY0-NEXT:    [[TMP859:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2083:%.*]] = sext i16 [[TMP859]] to i32
// SIMD-ONLY0-NEXT:    [[TMP860:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2084:%.*]] = sext i16 [[TMP860]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2085:%.*]] = icmp slt i32 [[CONV2083]], [[CONV2084]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2085]], label [[IF_THEN2087:%.*]], label [[IF_END2088:%.*]]
// SIMD-ONLY0:       if.then2087:
// SIMD-ONLY0-NEXT:    [[TMP861:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP861]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2088]]
// SIMD-ONLY0:       if.end2088:
// SIMD-ONLY0-NEXT:    [[TMP862:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2089:%.*]] = sext i16 [[TMP862]] to i32
// SIMD-ONLY0-NEXT:    [[TMP863:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2090:%.*]] = sext i16 [[TMP863]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2091:%.*]] = icmp sgt i32 [[CONV2089]], [[CONV2090]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2091]], label [[IF_THEN2093:%.*]], label [[IF_END2094:%.*]]
// SIMD-ONLY0:       if.then2093:
// SIMD-ONLY0-NEXT:    [[TMP864:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP864]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2094]]
// SIMD-ONLY0:       if.end2094:
// SIMD-ONLY0-NEXT:    [[TMP865:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2095:%.*]] = sext i16 [[TMP865]] to i32
// SIMD-ONLY0-NEXT:    [[TMP866:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2096:%.*]] = sext i16 [[TMP866]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2097:%.*]] = icmp slt i32 [[CONV2095]], [[CONV2096]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2097]], label [[IF_THEN2099:%.*]], label [[IF_END2100:%.*]]
// SIMD-ONLY0:       if.then2099:
// SIMD-ONLY0-NEXT:    [[TMP867:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP867]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2100]]
// SIMD-ONLY0:       if.end2100:
// SIMD-ONLY0-NEXT:    [[TMP868:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2101:%.*]] = sext i16 [[TMP868]] to i32
// SIMD-ONLY0-NEXT:    [[TMP869:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2102:%.*]] = sext i16 [[TMP869]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2103:%.*]] = icmp eq i32 [[CONV2101]], [[CONV2102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2103]], label [[COND_TRUE2105:%.*]], label [[COND_FALSE2107:%.*]]
// SIMD-ONLY0:       cond.true2105:
// SIMD-ONLY0-NEXT:    [[TMP870:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2106:%.*]] = sext i16 [[TMP870]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2109:%.*]]
// SIMD-ONLY0:       cond.false2107:
// SIMD-ONLY0-NEXT:    [[TMP871:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2108:%.*]] = sext i16 [[TMP871]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2109]]
// SIMD-ONLY0:       cond.end2109:
// SIMD-ONLY0-NEXT:    [[COND2110:%.*]] = phi i32 [ [[CONV2106]], [[COND_TRUE2105]] ], [ [[CONV2108]], [[COND_FALSE2107]] ]
// SIMD-ONLY0-NEXT:    [[CONV2111:%.*]] = trunc i32 [[COND2110]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2111]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP872:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2112:%.*]] = sext i16 [[TMP872]] to i32
// SIMD-ONLY0-NEXT:    [[TMP873:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2113:%.*]] = sext i16 [[TMP873]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2114:%.*]] = icmp eq i32 [[CONV2112]], [[CONV2113]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2114]], label [[COND_TRUE2116:%.*]], label [[COND_FALSE2118:%.*]]
// SIMD-ONLY0:       cond.true2116:
// SIMD-ONLY0-NEXT:    [[TMP874:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2117:%.*]] = sext i16 [[TMP874]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2120:%.*]]
// SIMD-ONLY0:       cond.false2118:
// SIMD-ONLY0-NEXT:    [[TMP875:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2119:%.*]] = sext i16 [[TMP875]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2120]]
// SIMD-ONLY0:       cond.end2120:
// SIMD-ONLY0-NEXT:    [[COND2121:%.*]] = phi i32 [ [[CONV2117]], [[COND_TRUE2116]] ], [ [[CONV2119]], [[COND_FALSE2118]] ]
// SIMD-ONLY0-NEXT:    [[CONV2122:%.*]] = trunc i32 [[COND2121]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2122]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP876:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2123:%.*]] = sext i16 [[TMP876]] to i32
// SIMD-ONLY0-NEXT:    [[TMP877:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2124:%.*]] = sext i16 [[TMP877]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2125:%.*]] = icmp eq i32 [[CONV2123]], [[CONV2124]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2125]], label [[IF_THEN2127:%.*]], label [[IF_END2128:%.*]]
// SIMD-ONLY0:       if.then2127:
// SIMD-ONLY0-NEXT:    [[TMP878:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP878]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2128]]
// SIMD-ONLY0:       if.end2128:
// SIMD-ONLY0-NEXT:    [[TMP879:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2129:%.*]] = sext i16 [[TMP879]] to i32
// SIMD-ONLY0-NEXT:    [[TMP880:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2130:%.*]] = sext i16 [[TMP880]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2131:%.*]] = icmp eq i32 [[CONV2129]], [[CONV2130]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2131]], label [[IF_THEN2133:%.*]], label [[IF_END2134:%.*]]
// SIMD-ONLY0:       if.then2133:
// SIMD-ONLY0-NEXT:    [[TMP881:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP881]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2134]]
// SIMD-ONLY0:       if.end2134:
// SIMD-ONLY0-NEXT:    [[TMP882:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2135:%.*]] = zext i16 [[TMP882]] to i32
// SIMD-ONLY0-NEXT:    [[TMP883:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2136:%.*]] = zext i16 [[TMP883]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2137:%.*]] = icmp sgt i32 [[CONV2135]], [[CONV2136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2137]], label [[COND_TRUE2139:%.*]], label [[COND_FALSE2141:%.*]]
// SIMD-ONLY0:       cond.true2139:
// SIMD-ONLY0-NEXT:    [[TMP884:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2140:%.*]] = zext i16 [[TMP884]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2143:%.*]]
// SIMD-ONLY0:       cond.false2141:
// SIMD-ONLY0-NEXT:    [[TMP885:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2142:%.*]] = zext i16 [[TMP885]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2143]]
// SIMD-ONLY0:       cond.end2143:
// SIMD-ONLY0-NEXT:    [[COND2144:%.*]] = phi i32 [ [[CONV2140]], [[COND_TRUE2139]] ], [ [[CONV2142]], [[COND_FALSE2141]] ]
// SIMD-ONLY0-NEXT:    [[CONV2145:%.*]] = trunc i32 [[COND2144]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2145]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP886:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2146:%.*]] = zext i16 [[TMP886]] to i32
// SIMD-ONLY0-NEXT:    [[TMP887:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2147:%.*]] = zext i16 [[TMP887]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2148:%.*]] = icmp slt i32 [[CONV2146]], [[CONV2147]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2148]], label [[COND_TRUE2150:%.*]], label [[COND_FALSE2152:%.*]]
// SIMD-ONLY0:       cond.true2150:
// SIMD-ONLY0-NEXT:    [[TMP888:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2151:%.*]] = zext i16 [[TMP888]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2154:%.*]]
// SIMD-ONLY0:       cond.false2152:
// SIMD-ONLY0-NEXT:    [[TMP889:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2153:%.*]] = zext i16 [[TMP889]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2154]]
// SIMD-ONLY0:       cond.end2154:
// SIMD-ONLY0-NEXT:    [[COND2155:%.*]] = phi i32 [ [[CONV2151]], [[COND_TRUE2150]] ], [ [[CONV2153]], [[COND_FALSE2152]] ]
// SIMD-ONLY0-NEXT:    [[CONV2156:%.*]] = trunc i32 [[COND2155]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2156]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP890:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2157:%.*]] = zext i16 [[TMP890]] to i32
// SIMD-ONLY0-NEXT:    [[TMP891:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2158:%.*]] = zext i16 [[TMP891]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2159:%.*]] = icmp sgt i32 [[CONV2157]], [[CONV2158]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2159]], label [[COND_TRUE2161:%.*]], label [[COND_FALSE2163:%.*]]
// SIMD-ONLY0:       cond.true2161:
// SIMD-ONLY0-NEXT:    [[TMP892:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2162:%.*]] = zext i16 [[TMP892]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2165:%.*]]
// SIMD-ONLY0:       cond.false2163:
// SIMD-ONLY0-NEXT:    [[TMP893:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2164:%.*]] = zext i16 [[TMP893]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2165]]
// SIMD-ONLY0:       cond.end2165:
// SIMD-ONLY0-NEXT:    [[COND2166:%.*]] = phi i32 [ [[CONV2162]], [[COND_TRUE2161]] ], [ [[CONV2164]], [[COND_FALSE2163]] ]
// SIMD-ONLY0-NEXT:    [[CONV2167:%.*]] = trunc i32 [[COND2166]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2167]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP894:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2168:%.*]] = zext i16 [[TMP894]] to i32
// SIMD-ONLY0-NEXT:    [[TMP895:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2169:%.*]] = zext i16 [[TMP895]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2170:%.*]] = icmp slt i32 [[CONV2168]], [[CONV2169]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2170]], label [[COND_TRUE2172:%.*]], label [[COND_FALSE2174:%.*]]
// SIMD-ONLY0:       cond.true2172:
// SIMD-ONLY0-NEXT:    [[TMP896:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2173:%.*]] = zext i16 [[TMP896]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2176:%.*]]
// SIMD-ONLY0:       cond.false2174:
// SIMD-ONLY0-NEXT:    [[TMP897:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2175:%.*]] = zext i16 [[TMP897]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2176]]
// SIMD-ONLY0:       cond.end2176:
// SIMD-ONLY0-NEXT:    [[COND2177:%.*]] = phi i32 [ [[CONV2173]], [[COND_TRUE2172]] ], [ [[CONV2175]], [[COND_FALSE2174]] ]
// SIMD-ONLY0-NEXT:    [[CONV2178:%.*]] = trunc i32 [[COND2177]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2178]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP898:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2179:%.*]] = zext i16 [[TMP898]] to i32
// SIMD-ONLY0-NEXT:    [[TMP899:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2180:%.*]] = zext i16 [[TMP899]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2181:%.*]] = icmp sgt i32 [[CONV2179]], [[CONV2180]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2181]], label [[IF_THEN2183:%.*]], label [[IF_END2184:%.*]]
// SIMD-ONLY0:       if.then2183:
// SIMD-ONLY0-NEXT:    [[TMP900:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP900]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2184]]
// SIMD-ONLY0:       if.end2184:
// SIMD-ONLY0-NEXT:    [[TMP901:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2185:%.*]] = zext i16 [[TMP901]] to i32
// SIMD-ONLY0-NEXT:    [[TMP902:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2186:%.*]] = zext i16 [[TMP902]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2187:%.*]] = icmp slt i32 [[CONV2185]], [[CONV2186]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2187]], label [[IF_THEN2189:%.*]], label [[IF_END2190:%.*]]
// SIMD-ONLY0:       if.then2189:
// SIMD-ONLY0-NEXT:    [[TMP903:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP903]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2190]]
// SIMD-ONLY0:       if.end2190:
// SIMD-ONLY0-NEXT:    [[TMP904:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2191:%.*]] = zext i16 [[TMP904]] to i32
// SIMD-ONLY0-NEXT:    [[TMP905:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2192:%.*]] = zext i16 [[TMP905]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2193:%.*]] = icmp sgt i32 [[CONV2191]], [[CONV2192]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2193]], label [[IF_THEN2195:%.*]], label [[IF_END2196:%.*]]
// SIMD-ONLY0:       if.then2195:
// SIMD-ONLY0-NEXT:    [[TMP906:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP906]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2196]]
// SIMD-ONLY0:       if.end2196:
// SIMD-ONLY0-NEXT:    [[TMP907:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2197:%.*]] = zext i16 [[TMP907]] to i32
// SIMD-ONLY0-NEXT:    [[TMP908:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2198:%.*]] = zext i16 [[TMP908]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2199:%.*]] = icmp slt i32 [[CONV2197]], [[CONV2198]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2199]], label [[IF_THEN2201:%.*]], label [[IF_END2202:%.*]]
// SIMD-ONLY0:       if.then2201:
// SIMD-ONLY0-NEXT:    [[TMP909:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP909]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2202]]
// SIMD-ONLY0:       if.end2202:
// SIMD-ONLY0-NEXT:    [[TMP910:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2203:%.*]] = zext i16 [[TMP910]] to i32
// SIMD-ONLY0-NEXT:    [[TMP911:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2204:%.*]] = zext i16 [[TMP911]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2205:%.*]] = icmp eq i32 [[CONV2203]], [[CONV2204]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2205]], label [[COND_TRUE2207:%.*]], label [[COND_FALSE2209:%.*]]
// SIMD-ONLY0:       cond.true2207:
// SIMD-ONLY0-NEXT:    [[TMP912:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2208:%.*]] = zext i16 [[TMP912]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2211:%.*]]
// SIMD-ONLY0:       cond.false2209:
// SIMD-ONLY0-NEXT:    [[TMP913:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2210:%.*]] = zext i16 [[TMP913]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2211]]
// SIMD-ONLY0:       cond.end2211:
// SIMD-ONLY0-NEXT:    [[COND2212:%.*]] = phi i32 [ [[CONV2208]], [[COND_TRUE2207]] ], [ [[CONV2210]], [[COND_FALSE2209]] ]
// SIMD-ONLY0-NEXT:    [[CONV2213:%.*]] = trunc i32 [[COND2212]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2213]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP914:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2214:%.*]] = zext i16 [[TMP914]] to i32
// SIMD-ONLY0-NEXT:    [[TMP915:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2215:%.*]] = zext i16 [[TMP915]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2216:%.*]] = icmp eq i32 [[CONV2214]], [[CONV2215]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2216]], label [[COND_TRUE2218:%.*]], label [[COND_FALSE2220:%.*]]
// SIMD-ONLY0:       cond.true2218:
// SIMD-ONLY0-NEXT:    [[TMP916:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2219:%.*]] = zext i16 [[TMP916]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2222:%.*]]
// SIMD-ONLY0:       cond.false2220:
// SIMD-ONLY0-NEXT:    [[TMP917:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2221:%.*]] = zext i16 [[TMP917]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2222]]
// SIMD-ONLY0:       cond.end2222:
// SIMD-ONLY0-NEXT:    [[COND2223:%.*]] = phi i32 [ [[CONV2219]], [[COND_TRUE2218]] ], [ [[CONV2221]], [[COND_FALSE2220]] ]
// SIMD-ONLY0-NEXT:    [[CONV2224:%.*]] = trunc i32 [[COND2223]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2224]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP918:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2225:%.*]] = zext i16 [[TMP918]] to i32
// SIMD-ONLY0-NEXT:    [[TMP919:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2226:%.*]] = zext i16 [[TMP919]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2227:%.*]] = icmp eq i32 [[CONV2225]], [[CONV2226]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2227]], label [[IF_THEN2229:%.*]], label [[IF_END2230:%.*]]
// SIMD-ONLY0:       if.then2229:
// SIMD-ONLY0-NEXT:    [[TMP920:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP920]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2230]]
// SIMD-ONLY0:       if.end2230:
// SIMD-ONLY0-NEXT:    [[TMP921:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2231:%.*]] = zext i16 [[TMP921]] to i32
// SIMD-ONLY0-NEXT:    [[TMP922:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2232:%.*]] = zext i16 [[TMP922]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2233:%.*]] = icmp eq i32 [[CONV2231]], [[CONV2232]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2233]], label [[IF_THEN2235:%.*]], label [[IF_END2236:%.*]]
// SIMD-ONLY0:       if.then2235:
// SIMD-ONLY0-NEXT:    [[TMP923:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP923]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2236]]
// SIMD-ONLY0:       if.end2236:
// SIMD-ONLY0-NEXT:    [[TMP924:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2237:%.*]] = sext i16 [[TMP924]] to i32
// SIMD-ONLY0-NEXT:    [[TMP925:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2238:%.*]] = sext i16 [[TMP925]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2239:%.*]] = icmp sgt i32 [[CONV2237]], [[CONV2238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2239]], label [[COND_TRUE2241:%.*]], label [[COND_FALSE2243:%.*]]
// SIMD-ONLY0:       cond.true2241:
// SIMD-ONLY0-NEXT:    [[TMP926:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2242:%.*]] = sext i16 [[TMP926]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2245:%.*]]
// SIMD-ONLY0:       cond.false2243:
// SIMD-ONLY0-NEXT:    [[TMP927:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2244:%.*]] = sext i16 [[TMP927]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2245]]
// SIMD-ONLY0:       cond.end2245:
// SIMD-ONLY0-NEXT:    [[COND2246:%.*]] = phi i32 [ [[CONV2242]], [[COND_TRUE2241]] ], [ [[CONV2244]], [[COND_FALSE2243]] ]
// SIMD-ONLY0-NEXT:    [[CONV2247:%.*]] = trunc i32 [[COND2246]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2247]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP928:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2248:%.*]] = sext i16 [[TMP928]] to i32
// SIMD-ONLY0-NEXT:    [[TMP929:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2249:%.*]] = sext i16 [[TMP929]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2250:%.*]] = icmp slt i32 [[CONV2248]], [[CONV2249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2250]], label [[COND_TRUE2252:%.*]], label [[COND_FALSE2254:%.*]]
// SIMD-ONLY0:       cond.true2252:
// SIMD-ONLY0-NEXT:    [[TMP930:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2253:%.*]] = sext i16 [[TMP930]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2256:%.*]]
// SIMD-ONLY0:       cond.false2254:
// SIMD-ONLY0-NEXT:    [[TMP931:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2255:%.*]] = sext i16 [[TMP931]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2256]]
// SIMD-ONLY0:       cond.end2256:
// SIMD-ONLY0-NEXT:    [[COND2257:%.*]] = phi i32 [ [[CONV2253]], [[COND_TRUE2252]] ], [ [[CONV2255]], [[COND_FALSE2254]] ]
// SIMD-ONLY0-NEXT:    [[CONV2258:%.*]] = trunc i32 [[COND2257]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2258]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP932:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2259:%.*]] = sext i16 [[TMP932]] to i32
// SIMD-ONLY0-NEXT:    [[TMP933:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2260:%.*]] = sext i16 [[TMP933]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2261:%.*]] = icmp sgt i32 [[CONV2259]], [[CONV2260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2261]], label [[COND_TRUE2263:%.*]], label [[COND_FALSE2265:%.*]]
// SIMD-ONLY0:       cond.true2263:
// SIMD-ONLY0-NEXT:    [[TMP934:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2264:%.*]] = sext i16 [[TMP934]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2267:%.*]]
// SIMD-ONLY0:       cond.false2265:
// SIMD-ONLY0-NEXT:    [[TMP935:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2266:%.*]] = sext i16 [[TMP935]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2267]]
// SIMD-ONLY0:       cond.end2267:
// SIMD-ONLY0-NEXT:    [[COND2268:%.*]] = phi i32 [ [[CONV2264]], [[COND_TRUE2263]] ], [ [[CONV2266]], [[COND_FALSE2265]] ]
// SIMD-ONLY0-NEXT:    [[CONV2269:%.*]] = trunc i32 [[COND2268]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2269]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP936:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2270:%.*]] = sext i16 [[TMP936]] to i32
// SIMD-ONLY0-NEXT:    [[TMP937:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2271:%.*]] = sext i16 [[TMP937]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2272:%.*]] = icmp slt i32 [[CONV2270]], [[CONV2271]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2272]], label [[COND_TRUE2274:%.*]], label [[COND_FALSE2276:%.*]]
// SIMD-ONLY0:       cond.true2274:
// SIMD-ONLY0-NEXT:    [[TMP938:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2275:%.*]] = sext i16 [[TMP938]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2278:%.*]]
// SIMD-ONLY0:       cond.false2276:
// SIMD-ONLY0-NEXT:    [[TMP939:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2277:%.*]] = sext i16 [[TMP939]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2278]]
// SIMD-ONLY0:       cond.end2278:
// SIMD-ONLY0-NEXT:    [[COND2279:%.*]] = phi i32 [ [[CONV2275]], [[COND_TRUE2274]] ], [ [[CONV2277]], [[COND_FALSE2276]] ]
// SIMD-ONLY0-NEXT:    [[CONV2280:%.*]] = trunc i32 [[COND2279]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2280]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP940:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2281:%.*]] = sext i16 [[TMP940]] to i32
// SIMD-ONLY0-NEXT:    [[TMP941:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2282:%.*]] = sext i16 [[TMP941]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2283:%.*]] = icmp sgt i32 [[CONV2281]], [[CONV2282]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2283]], label [[IF_THEN2285:%.*]], label [[IF_END2286:%.*]]
// SIMD-ONLY0:       if.then2285:
// SIMD-ONLY0-NEXT:    [[TMP942:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP942]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2286]]
// SIMD-ONLY0:       if.end2286:
// SIMD-ONLY0-NEXT:    [[TMP943:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2287:%.*]] = sext i16 [[TMP943]] to i32
// SIMD-ONLY0-NEXT:    [[TMP944:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2288:%.*]] = sext i16 [[TMP944]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2289:%.*]] = icmp slt i32 [[CONV2287]], [[CONV2288]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2289]], label [[IF_THEN2291:%.*]], label [[IF_END2292:%.*]]
// SIMD-ONLY0:       if.then2291:
// SIMD-ONLY0-NEXT:    [[TMP945:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP945]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2292]]
// SIMD-ONLY0:       if.end2292:
// SIMD-ONLY0-NEXT:    [[TMP946:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2293:%.*]] = sext i16 [[TMP946]] to i32
// SIMD-ONLY0-NEXT:    [[TMP947:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2294:%.*]] = sext i16 [[TMP947]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2295:%.*]] = icmp sgt i32 [[CONV2293]], [[CONV2294]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2295]], label [[IF_THEN2297:%.*]], label [[IF_END2298:%.*]]
// SIMD-ONLY0:       if.then2297:
// SIMD-ONLY0-NEXT:    [[TMP948:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP948]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2298]]
// SIMD-ONLY0:       if.end2298:
// SIMD-ONLY0-NEXT:    [[TMP949:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2299:%.*]] = sext i16 [[TMP949]] to i32
// SIMD-ONLY0-NEXT:    [[TMP950:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2300:%.*]] = sext i16 [[TMP950]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2301:%.*]] = icmp slt i32 [[CONV2299]], [[CONV2300]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2301]], label [[IF_THEN2303:%.*]], label [[IF_END2304:%.*]]
// SIMD-ONLY0:       if.then2303:
// SIMD-ONLY0-NEXT:    [[TMP951:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP951]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2304]]
// SIMD-ONLY0:       if.end2304:
// SIMD-ONLY0-NEXT:    [[TMP952:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2305:%.*]] = sext i16 [[TMP952]] to i32
// SIMD-ONLY0-NEXT:    [[TMP953:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2306:%.*]] = sext i16 [[TMP953]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2307:%.*]] = icmp eq i32 [[CONV2305]], [[CONV2306]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2307]], label [[COND_TRUE2309:%.*]], label [[COND_FALSE2311:%.*]]
// SIMD-ONLY0:       cond.true2309:
// SIMD-ONLY0-NEXT:    [[TMP954:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2310:%.*]] = sext i16 [[TMP954]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2313:%.*]]
// SIMD-ONLY0:       cond.false2311:
// SIMD-ONLY0-NEXT:    [[TMP955:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2312:%.*]] = sext i16 [[TMP955]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2313]]
// SIMD-ONLY0:       cond.end2313:
// SIMD-ONLY0-NEXT:    [[COND2314:%.*]] = phi i32 [ [[CONV2310]], [[COND_TRUE2309]] ], [ [[CONV2312]], [[COND_FALSE2311]] ]
// SIMD-ONLY0-NEXT:    [[CONV2315:%.*]] = trunc i32 [[COND2314]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2315]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP956:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2316:%.*]] = sext i16 [[TMP956]] to i32
// SIMD-ONLY0-NEXT:    [[TMP957:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2317:%.*]] = sext i16 [[TMP957]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2318:%.*]] = icmp eq i32 [[CONV2316]], [[CONV2317]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2318]], label [[COND_TRUE2320:%.*]], label [[COND_FALSE2322:%.*]]
// SIMD-ONLY0:       cond.true2320:
// SIMD-ONLY0-NEXT:    [[TMP958:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2321:%.*]] = sext i16 [[TMP958]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2324:%.*]]
// SIMD-ONLY0:       cond.false2322:
// SIMD-ONLY0-NEXT:    [[TMP959:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2323:%.*]] = sext i16 [[TMP959]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2324]]
// SIMD-ONLY0:       cond.end2324:
// SIMD-ONLY0-NEXT:    [[COND2325:%.*]] = phi i32 [ [[CONV2321]], [[COND_TRUE2320]] ], [ [[CONV2323]], [[COND_FALSE2322]] ]
// SIMD-ONLY0-NEXT:    [[CONV2326:%.*]] = trunc i32 [[COND2325]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2326]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP960:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2327:%.*]] = sext i16 [[TMP960]] to i32
// SIMD-ONLY0-NEXT:    [[TMP961:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2328:%.*]] = sext i16 [[TMP961]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2329:%.*]] = icmp eq i32 [[CONV2327]], [[CONV2328]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2329]], label [[IF_THEN2331:%.*]], label [[IF_END2332:%.*]]
// SIMD-ONLY0:       if.then2331:
// SIMD-ONLY0-NEXT:    [[TMP962:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP962]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2332]]
// SIMD-ONLY0:       if.end2332:
// SIMD-ONLY0-NEXT:    [[TMP963:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2333:%.*]] = sext i16 [[TMP963]] to i32
// SIMD-ONLY0-NEXT:    [[TMP964:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2334:%.*]] = sext i16 [[TMP964]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2335:%.*]] = icmp eq i32 [[CONV2333]], [[CONV2334]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2335]], label [[IF_THEN2337:%.*]], label [[IF_END2338:%.*]]
// SIMD-ONLY0:       if.then2337:
// SIMD-ONLY0-NEXT:    [[TMP965:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP965]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2338]]
// SIMD-ONLY0:       if.end2338:
// SIMD-ONLY0-NEXT:    [[TMP966:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2339:%.*]] = zext i16 [[TMP966]] to i32
// SIMD-ONLY0-NEXT:    [[TMP967:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2340:%.*]] = zext i16 [[TMP967]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2341:%.*]] = icmp sgt i32 [[CONV2339]], [[CONV2340]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2341]], label [[COND_TRUE2343:%.*]], label [[COND_FALSE2345:%.*]]
// SIMD-ONLY0:       cond.true2343:
// SIMD-ONLY0-NEXT:    [[TMP968:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2344:%.*]] = zext i16 [[TMP968]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2347:%.*]]
// SIMD-ONLY0:       cond.false2345:
// SIMD-ONLY0-NEXT:    [[TMP969:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2346:%.*]] = zext i16 [[TMP969]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2347]]
// SIMD-ONLY0:       cond.end2347:
// SIMD-ONLY0-NEXT:    [[COND2348:%.*]] = phi i32 [ [[CONV2344]], [[COND_TRUE2343]] ], [ [[CONV2346]], [[COND_FALSE2345]] ]
// SIMD-ONLY0-NEXT:    [[CONV2349:%.*]] = trunc i32 [[COND2348]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2349]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP970:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2350:%.*]] = zext i16 [[TMP970]] to i32
// SIMD-ONLY0-NEXT:    [[TMP971:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2351:%.*]] = zext i16 [[TMP971]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2352:%.*]] = icmp slt i32 [[CONV2350]], [[CONV2351]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2352]], label [[COND_TRUE2354:%.*]], label [[COND_FALSE2356:%.*]]
// SIMD-ONLY0:       cond.true2354:
// SIMD-ONLY0-NEXT:    [[TMP972:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2355:%.*]] = zext i16 [[TMP972]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2358:%.*]]
// SIMD-ONLY0:       cond.false2356:
// SIMD-ONLY0-NEXT:    [[TMP973:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2357:%.*]] = zext i16 [[TMP973]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2358]]
// SIMD-ONLY0:       cond.end2358:
// SIMD-ONLY0-NEXT:    [[COND2359:%.*]] = phi i32 [ [[CONV2355]], [[COND_TRUE2354]] ], [ [[CONV2357]], [[COND_FALSE2356]] ]
// SIMD-ONLY0-NEXT:    [[CONV2360:%.*]] = trunc i32 [[COND2359]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2360]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP974:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2361:%.*]] = zext i16 [[TMP974]] to i32
// SIMD-ONLY0-NEXT:    [[TMP975:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2362:%.*]] = zext i16 [[TMP975]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2363:%.*]] = icmp sgt i32 [[CONV2361]], [[CONV2362]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2363]], label [[COND_TRUE2365:%.*]], label [[COND_FALSE2367:%.*]]
// SIMD-ONLY0:       cond.true2365:
// SIMD-ONLY0-NEXT:    [[TMP976:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2366:%.*]] = zext i16 [[TMP976]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2369:%.*]]
// SIMD-ONLY0:       cond.false2367:
// SIMD-ONLY0-NEXT:    [[TMP977:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2368:%.*]] = zext i16 [[TMP977]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2369]]
// SIMD-ONLY0:       cond.end2369:
// SIMD-ONLY0-NEXT:    [[COND2370:%.*]] = phi i32 [ [[CONV2366]], [[COND_TRUE2365]] ], [ [[CONV2368]], [[COND_FALSE2367]] ]
// SIMD-ONLY0-NEXT:    [[CONV2371:%.*]] = trunc i32 [[COND2370]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2371]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP978:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2372:%.*]] = zext i16 [[TMP978]] to i32
// SIMD-ONLY0-NEXT:    [[TMP979:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2373:%.*]] = zext i16 [[TMP979]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2374:%.*]] = icmp slt i32 [[CONV2372]], [[CONV2373]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2374]], label [[COND_TRUE2376:%.*]], label [[COND_FALSE2378:%.*]]
// SIMD-ONLY0:       cond.true2376:
// SIMD-ONLY0-NEXT:    [[TMP980:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2377:%.*]] = zext i16 [[TMP980]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2380:%.*]]
// SIMD-ONLY0:       cond.false2378:
// SIMD-ONLY0-NEXT:    [[TMP981:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2379:%.*]] = zext i16 [[TMP981]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2380]]
// SIMD-ONLY0:       cond.end2380:
// SIMD-ONLY0-NEXT:    [[COND2381:%.*]] = phi i32 [ [[CONV2377]], [[COND_TRUE2376]] ], [ [[CONV2379]], [[COND_FALSE2378]] ]
// SIMD-ONLY0-NEXT:    [[CONV2382:%.*]] = trunc i32 [[COND2381]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2382]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP982:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2383:%.*]] = zext i16 [[TMP982]] to i32
// SIMD-ONLY0-NEXT:    [[TMP983:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2384:%.*]] = zext i16 [[TMP983]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2385:%.*]] = icmp sgt i32 [[CONV2383]], [[CONV2384]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2385]], label [[IF_THEN2387:%.*]], label [[IF_END2388:%.*]]
// SIMD-ONLY0:       if.then2387:
// SIMD-ONLY0-NEXT:    [[TMP984:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP984]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2388]]
// SIMD-ONLY0:       if.end2388:
// SIMD-ONLY0-NEXT:    [[TMP985:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2389:%.*]] = zext i16 [[TMP985]] to i32
// SIMD-ONLY0-NEXT:    [[TMP986:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2390:%.*]] = zext i16 [[TMP986]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2391:%.*]] = icmp slt i32 [[CONV2389]], [[CONV2390]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2391]], label [[IF_THEN2393:%.*]], label [[IF_END2394:%.*]]
// SIMD-ONLY0:       if.then2393:
// SIMD-ONLY0-NEXT:    [[TMP987:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP987]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2394]]
// SIMD-ONLY0:       if.end2394:
// SIMD-ONLY0-NEXT:    [[TMP988:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2395:%.*]] = zext i16 [[TMP988]] to i32
// SIMD-ONLY0-NEXT:    [[TMP989:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2396:%.*]] = zext i16 [[TMP989]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2397:%.*]] = icmp sgt i32 [[CONV2395]], [[CONV2396]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2397]], label [[IF_THEN2399:%.*]], label [[IF_END2400:%.*]]
// SIMD-ONLY0:       if.then2399:
// SIMD-ONLY0-NEXT:    [[TMP990:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP990]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2400]]
// SIMD-ONLY0:       if.end2400:
// SIMD-ONLY0-NEXT:    [[TMP991:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2401:%.*]] = zext i16 [[TMP991]] to i32
// SIMD-ONLY0-NEXT:    [[TMP992:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2402:%.*]] = zext i16 [[TMP992]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2403:%.*]] = icmp slt i32 [[CONV2401]], [[CONV2402]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2403]], label [[IF_THEN2405:%.*]], label [[IF_END2406:%.*]]
// SIMD-ONLY0:       if.then2405:
// SIMD-ONLY0-NEXT:    [[TMP993:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP993]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2406]]
// SIMD-ONLY0:       if.end2406:
// SIMD-ONLY0-NEXT:    [[TMP994:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2407:%.*]] = zext i16 [[TMP994]] to i32
// SIMD-ONLY0-NEXT:    [[TMP995:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2408:%.*]] = zext i16 [[TMP995]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2409:%.*]] = icmp eq i32 [[CONV2407]], [[CONV2408]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2409]], label [[COND_TRUE2411:%.*]], label [[COND_FALSE2413:%.*]]
// SIMD-ONLY0:       cond.true2411:
// SIMD-ONLY0-NEXT:    [[TMP996:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2412:%.*]] = zext i16 [[TMP996]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2415:%.*]]
// SIMD-ONLY0:       cond.false2413:
// SIMD-ONLY0-NEXT:    [[TMP997:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2414:%.*]] = zext i16 [[TMP997]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2415]]
// SIMD-ONLY0:       cond.end2415:
// SIMD-ONLY0-NEXT:    [[COND2416:%.*]] = phi i32 [ [[CONV2412]], [[COND_TRUE2411]] ], [ [[CONV2414]], [[COND_FALSE2413]] ]
// SIMD-ONLY0-NEXT:    [[CONV2417:%.*]] = trunc i32 [[COND2416]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2417]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP998:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2418:%.*]] = zext i16 [[TMP998]] to i32
// SIMD-ONLY0-NEXT:    [[TMP999:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2419:%.*]] = zext i16 [[TMP999]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2420:%.*]] = icmp eq i32 [[CONV2418]], [[CONV2419]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2420]], label [[COND_TRUE2422:%.*]], label [[COND_FALSE2424:%.*]]
// SIMD-ONLY0:       cond.true2422:
// SIMD-ONLY0-NEXT:    [[TMP1000:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2423:%.*]] = zext i16 [[TMP1000]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2426:%.*]]
// SIMD-ONLY0:       cond.false2424:
// SIMD-ONLY0-NEXT:    [[TMP1001:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2425:%.*]] = zext i16 [[TMP1001]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END2426]]
// SIMD-ONLY0:       cond.end2426:
// SIMD-ONLY0-NEXT:    [[COND2427:%.*]] = phi i32 [ [[CONV2423]], [[COND_TRUE2422]] ], [ [[CONV2425]], [[COND_FALSE2424]] ]
// SIMD-ONLY0-NEXT:    [[CONV2428:%.*]] = trunc i32 [[COND2427]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2428]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1002:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2429:%.*]] = zext i16 [[TMP1002]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1003:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2430:%.*]] = zext i16 [[TMP1003]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2431:%.*]] = icmp eq i32 [[CONV2429]], [[CONV2430]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2431]], label [[IF_THEN2433:%.*]], label [[IF_END2434:%.*]]
// SIMD-ONLY0:       if.then2433:
// SIMD-ONLY0-NEXT:    [[TMP1004:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1004]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2434]]
// SIMD-ONLY0:       if.end2434:
// SIMD-ONLY0-NEXT:    [[TMP1005:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2435:%.*]] = zext i16 [[TMP1005]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1006:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2436:%.*]] = zext i16 [[TMP1006]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2437:%.*]] = icmp eq i32 [[CONV2435]], [[CONV2436]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2437]], label [[IF_THEN2439:%.*]], label [[IF_END2440:%.*]]
// SIMD-ONLY0:       if.then2439:
// SIMD-ONLY0-NEXT:    [[TMP1007:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1007]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2440]]
// SIMD-ONLY0:       if.end2440:
// SIMD-ONLY0-NEXT:    [[TMP1008:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1009:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2441:%.*]] = icmp sgt i32 [[TMP1008]], [[TMP1009]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2441]], label [[COND_TRUE2443:%.*]], label [[COND_FALSE2444:%.*]]
// SIMD-ONLY0:       cond.true2443:
// SIMD-ONLY0-NEXT:    [[TMP1010:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2445:%.*]]
// SIMD-ONLY0:       cond.false2444:
// SIMD-ONLY0-NEXT:    [[TMP1011:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2445]]
// SIMD-ONLY0:       cond.end2445:
// SIMD-ONLY0-NEXT:    [[COND2446:%.*]] = phi i32 [ [[TMP1010]], [[COND_TRUE2443]] ], [ [[TMP1011]], [[COND_FALSE2444]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2446]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1012:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1013:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2447:%.*]] = icmp slt i32 [[TMP1012]], [[TMP1013]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2447]], label [[COND_TRUE2449:%.*]], label [[COND_FALSE2450:%.*]]
// SIMD-ONLY0:       cond.true2449:
// SIMD-ONLY0-NEXT:    [[TMP1014:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2451:%.*]]
// SIMD-ONLY0:       cond.false2450:
// SIMD-ONLY0-NEXT:    [[TMP1015:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2451]]
// SIMD-ONLY0:       cond.end2451:
// SIMD-ONLY0-NEXT:    [[COND2452:%.*]] = phi i32 [ [[TMP1014]], [[COND_TRUE2449]] ], [ [[TMP1015]], [[COND_FALSE2450]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2452]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1016:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1017:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2453:%.*]] = icmp sgt i32 [[TMP1016]], [[TMP1017]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2453]], label [[COND_TRUE2455:%.*]], label [[COND_FALSE2456:%.*]]
// SIMD-ONLY0:       cond.true2455:
// SIMD-ONLY0-NEXT:    [[TMP1018:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2457:%.*]]
// SIMD-ONLY0:       cond.false2456:
// SIMD-ONLY0-NEXT:    [[TMP1019:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2457]]
// SIMD-ONLY0:       cond.end2457:
// SIMD-ONLY0-NEXT:    [[COND2458:%.*]] = phi i32 [ [[TMP1018]], [[COND_TRUE2455]] ], [ [[TMP1019]], [[COND_FALSE2456]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2458]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1020:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1021:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2459:%.*]] = icmp slt i32 [[TMP1020]], [[TMP1021]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2459]], label [[COND_TRUE2461:%.*]], label [[COND_FALSE2462:%.*]]
// SIMD-ONLY0:       cond.true2461:
// SIMD-ONLY0-NEXT:    [[TMP1022:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2463:%.*]]
// SIMD-ONLY0:       cond.false2462:
// SIMD-ONLY0-NEXT:    [[TMP1023:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2463]]
// SIMD-ONLY0:       cond.end2463:
// SIMD-ONLY0-NEXT:    [[COND2464:%.*]] = phi i32 [ [[TMP1022]], [[COND_TRUE2461]] ], [ [[TMP1023]], [[COND_FALSE2462]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2464]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1024:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1025:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2465:%.*]] = icmp sgt i32 [[TMP1024]], [[TMP1025]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2465]], label [[IF_THEN2467:%.*]], label [[IF_END2468:%.*]]
// SIMD-ONLY0:       if.then2467:
// SIMD-ONLY0-NEXT:    [[TMP1026:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1026]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2468]]
// SIMD-ONLY0:       if.end2468:
// SIMD-ONLY0-NEXT:    [[TMP1027:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1028:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2469:%.*]] = icmp slt i32 [[TMP1027]], [[TMP1028]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2469]], label [[IF_THEN2471:%.*]], label [[IF_END2472:%.*]]
// SIMD-ONLY0:       if.then2471:
// SIMD-ONLY0-NEXT:    [[TMP1029:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1029]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2472]]
// SIMD-ONLY0:       if.end2472:
// SIMD-ONLY0-NEXT:    [[TMP1030:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1031:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2473:%.*]] = icmp sgt i32 [[TMP1030]], [[TMP1031]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2473]], label [[IF_THEN2475:%.*]], label [[IF_END2476:%.*]]
// SIMD-ONLY0:       if.then2475:
// SIMD-ONLY0-NEXT:    [[TMP1032:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1032]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2476]]
// SIMD-ONLY0:       if.end2476:
// SIMD-ONLY0-NEXT:    [[TMP1033:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1034:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2477:%.*]] = icmp slt i32 [[TMP1033]], [[TMP1034]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2477]], label [[IF_THEN2479:%.*]], label [[IF_END2480:%.*]]
// SIMD-ONLY0:       if.then2479:
// SIMD-ONLY0-NEXT:    [[TMP1035:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1035]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2480]]
// SIMD-ONLY0:       if.end2480:
// SIMD-ONLY0-NEXT:    [[TMP1036:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1037:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2481:%.*]] = icmp eq i32 [[TMP1036]], [[TMP1037]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2481]], label [[COND_TRUE2483:%.*]], label [[COND_FALSE2484:%.*]]
// SIMD-ONLY0:       cond.true2483:
// SIMD-ONLY0-NEXT:    [[TMP1038:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2485:%.*]]
// SIMD-ONLY0:       cond.false2484:
// SIMD-ONLY0-NEXT:    [[TMP1039:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2485]]
// SIMD-ONLY0:       cond.end2485:
// SIMD-ONLY0-NEXT:    [[COND2486:%.*]] = phi i32 [ [[TMP1038]], [[COND_TRUE2483]] ], [ [[TMP1039]], [[COND_FALSE2484]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2486]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1040:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1041:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2487:%.*]] = icmp eq i32 [[TMP1040]], [[TMP1041]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2487]], label [[COND_TRUE2489:%.*]], label [[COND_FALSE2490:%.*]]
// SIMD-ONLY0:       cond.true2489:
// SIMD-ONLY0-NEXT:    [[TMP1042:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2491:%.*]]
// SIMD-ONLY0:       cond.false2490:
// SIMD-ONLY0-NEXT:    [[TMP1043:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2491]]
// SIMD-ONLY0:       cond.end2491:
// SIMD-ONLY0-NEXT:    [[COND2492:%.*]] = phi i32 [ [[TMP1042]], [[COND_TRUE2489]] ], [ [[TMP1043]], [[COND_FALSE2490]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2492]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1044:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1045:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2493:%.*]] = icmp eq i32 [[TMP1044]], [[TMP1045]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2493]], label [[IF_THEN2495:%.*]], label [[IF_END2496:%.*]]
// SIMD-ONLY0:       if.then2495:
// SIMD-ONLY0-NEXT:    [[TMP1046:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1046]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2496]]
// SIMD-ONLY0:       if.end2496:
// SIMD-ONLY0-NEXT:    [[TMP1047:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1048:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2497:%.*]] = icmp eq i32 [[TMP1047]], [[TMP1048]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2497]], label [[IF_THEN2499:%.*]], label [[IF_END2500:%.*]]
// SIMD-ONLY0:       if.then2499:
// SIMD-ONLY0-NEXT:    [[TMP1049:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1049]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2500]]
// SIMD-ONLY0:       if.end2500:
// SIMD-ONLY0-NEXT:    [[TMP1050:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1051:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2501:%.*]] = icmp ugt i32 [[TMP1050]], [[TMP1051]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2501]], label [[COND_TRUE2503:%.*]], label [[COND_FALSE2504:%.*]]
// SIMD-ONLY0:       cond.true2503:
// SIMD-ONLY0-NEXT:    [[TMP1052:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2505:%.*]]
// SIMD-ONLY0:       cond.false2504:
// SIMD-ONLY0-NEXT:    [[TMP1053:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2505]]
// SIMD-ONLY0:       cond.end2505:
// SIMD-ONLY0-NEXT:    [[COND2506:%.*]] = phi i32 [ [[TMP1052]], [[COND_TRUE2503]] ], [ [[TMP1053]], [[COND_FALSE2504]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2506]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1054:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1055:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2507:%.*]] = icmp ult i32 [[TMP1054]], [[TMP1055]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2507]], label [[COND_TRUE2509:%.*]], label [[COND_FALSE2510:%.*]]
// SIMD-ONLY0:       cond.true2509:
// SIMD-ONLY0-NEXT:    [[TMP1056:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2511:%.*]]
// SIMD-ONLY0:       cond.false2510:
// SIMD-ONLY0-NEXT:    [[TMP1057:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2511]]
// SIMD-ONLY0:       cond.end2511:
// SIMD-ONLY0-NEXT:    [[COND2512:%.*]] = phi i32 [ [[TMP1056]], [[COND_TRUE2509]] ], [ [[TMP1057]], [[COND_FALSE2510]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2512]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1058:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1059:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2513:%.*]] = icmp ugt i32 [[TMP1058]], [[TMP1059]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2513]], label [[COND_TRUE2515:%.*]], label [[COND_FALSE2516:%.*]]
// SIMD-ONLY0:       cond.true2515:
// SIMD-ONLY0-NEXT:    [[TMP1060:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2517:%.*]]
// SIMD-ONLY0:       cond.false2516:
// SIMD-ONLY0-NEXT:    [[TMP1061:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2517]]
// SIMD-ONLY0:       cond.end2517:
// SIMD-ONLY0-NEXT:    [[COND2518:%.*]] = phi i32 [ [[TMP1060]], [[COND_TRUE2515]] ], [ [[TMP1061]], [[COND_FALSE2516]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2518]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1062:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1063:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2519:%.*]] = icmp ult i32 [[TMP1062]], [[TMP1063]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2519]], label [[COND_TRUE2521:%.*]], label [[COND_FALSE2522:%.*]]
// SIMD-ONLY0:       cond.true2521:
// SIMD-ONLY0-NEXT:    [[TMP1064:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2523:%.*]]
// SIMD-ONLY0:       cond.false2522:
// SIMD-ONLY0-NEXT:    [[TMP1065:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2523]]
// SIMD-ONLY0:       cond.end2523:
// SIMD-ONLY0-NEXT:    [[COND2524:%.*]] = phi i32 [ [[TMP1064]], [[COND_TRUE2521]] ], [ [[TMP1065]], [[COND_FALSE2522]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2524]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1066:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1067:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2525:%.*]] = icmp ugt i32 [[TMP1066]], [[TMP1067]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2525]], label [[IF_THEN2527:%.*]], label [[IF_END2528:%.*]]
// SIMD-ONLY0:       if.then2527:
// SIMD-ONLY0-NEXT:    [[TMP1068:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1068]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2528]]
// SIMD-ONLY0:       if.end2528:
// SIMD-ONLY0-NEXT:    [[TMP1069:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1070:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2529:%.*]] = icmp ult i32 [[TMP1069]], [[TMP1070]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2529]], label [[IF_THEN2531:%.*]], label [[IF_END2532:%.*]]
// SIMD-ONLY0:       if.then2531:
// SIMD-ONLY0-NEXT:    [[TMP1071:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1071]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2532]]
// SIMD-ONLY0:       if.end2532:
// SIMD-ONLY0-NEXT:    [[TMP1072:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1073:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2533:%.*]] = icmp ugt i32 [[TMP1072]], [[TMP1073]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2533]], label [[IF_THEN2535:%.*]], label [[IF_END2536:%.*]]
// SIMD-ONLY0:       if.then2535:
// SIMD-ONLY0-NEXT:    [[TMP1074:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1074]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2536]]
// SIMD-ONLY0:       if.end2536:
// SIMD-ONLY0-NEXT:    [[TMP1075:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1076:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2537:%.*]] = icmp ult i32 [[TMP1075]], [[TMP1076]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2537]], label [[IF_THEN2539:%.*]], label [[IF_END2540:%.*]]
// SIMD-ONLY0:       if.then2539:
// SIMD-ONLY0-NEXT:    [[TMP1077:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1077]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2540]]
// SIMD-ONLY0:       if.end2540:
// SIMD-ONLY0-NEXT:    [[TMP1078:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1079:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2541:%.*]] = icmp eq i32 [[TMP1078]], [[TMP1079]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2541]], label [[COND_TRUE2543:%.*]], label [[COND_FALSE2544:%.*]]
// SIMD-ONLY0:       cond.true2543:
// SIMD-ONLY0-NEXT:    [[TMP1080:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2545:%.*]]
// SIMD-ONLY0:       cond.false2544:
// SIMD-ONLY0-NEXT:    [[TMP1081:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2545]]
// SIMD-ONLY0:       cond.end2545:
// SIMD-ONLY0-NEXT:    [[COND2546:%.*]] = phi i32 [ [[TMP1080]], [[COND_TRUE2543]] ], [ [[TMP1081]], [[COND_FALSE2544]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2546]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1082:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1083:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2547:%.*]] = icmp eq i32 [[TMP1082]], [[TMP1083]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2547]], label [[COND_TRUE2549:%.*]], label [[COND_FALSE2550:%.*]]
// SIMD-ONLY0:       cond.true2549:
// SIMD-ONLY0-NEXT:    [[TMP1084:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2551:%.*]]
// SIMD-ONLY0:       cond.false2550:
// SIMD-ONLY0-NEXT:    [[TMP1085:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2551]]
// SIMD-ONLY0:       cond.end2551:
// SIMD-ONLY0-NEXT:    [[COND2552:%.*]] = phi i32 [ [[TMP1084]], [[COND_TRUE2549]] ], [ [[TMP1085]], [[COND_FALSE2550]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2552]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1086:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1087:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2553:%.*]] = icmp eq i32 [[TMP1086]], [[TMP1087]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2553]], label [[IF_THEN2555:%.*]], label [[IF_END2556:%.*]]
// SIMD-ONLY0:       if.then2555:
// SIMD-ONLY0-NEXT:    [[TMP1088:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1088]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2556]]
// SIMD-ONLY0:       if.end2556:
// SIMD-ONLY0-NEXT:    [[TMP1089:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1090:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2557:%.*]] = icmp eq i32 [[TMP1089]], [[TMP1090]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2557]], label [[IF_THEN2559:%.*]], label [[IF_END2560:%.*]]
// SIMD-ONLY0:       if.then2559:
// SIMD-ONLY0-NEXT:    [[TMP1091:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1091]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2560]]
// SIMD-ONLY0:       if.end2560:
// SIMD-ONLY0-NEXT:    [[TMP1092:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1093:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2561:%.*]] = icmp sgt i32 [[TMP1092]], [[TMP1093]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2561]], label [[COND_TRUE2563:%.*]], label [[COND_FALSE2564:%.*]]
// SIMD-ONLY0:       cond.true2563:
// SIMD-ONLY0-NEXT:    [[TMP1094:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2565:%.*]]
// SIMD-ONLY0:       cond.false2564:
// SIMD-ONLY0-NEXT:    [[TMP1095:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2565]]
// SIMD-ONLY0:       cond.end2565:
// SIMD-ONLY0-NEXT:    [[COND2566:%.*]] = phi i32 [ [[TMP1094]], [[COND_TRUE2563]] ], [ [[TMP1095]], [[COND_FALSE2564]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2566]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1096:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1097:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2567:%.*]] = icmp slt i32 [[TMP1096]], [[TMP1097]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2567]], label [[COND_TRUE2569:%.*]], label [[COND_FALSE2570:%.*]]
// SIMD-ONLY0:       cond.true2569:
// SIMD-ONLY0-NEXT:    [[TMP1098:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2571:%.*]]
// SIMD-ONLY0:       cond.false2570:
// SIMD-ONLY0-NEXT:    [[TMP1099:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2571]]
// SIMD-ONLY0:       cond.end2571:
// SIMD-ONLY0-NEXT:    [[COND2572:%.*]] = phi i32 [ [[TMP1098]], [[COND_TRUE2569]] ], [ [[TMP1099]], [[COND_FALSE2570]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2572]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1100:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1101:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2573:%.*]] = icmp sgt i32 [[TMP1100]], [[TMP1101]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2573]], label [[COND_TRUE2575:%.*]], label [[COND_FALSE2576:%.*]]
// SIMD-ONLY0:       cond.true2575:
// SIMD-ONLY0-NEXT:    [[TMP1102:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2577:%.*]]
// SIMD-ONLY0:       cond.false2576:
// SIMD-ONLY0-NEXT:    [[TMP1103:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2577]]
// SIMD-ONLY0:       cond.end2577:
// SIMD-ONLY0-NEXT:    [[COND2578:%.*]] = phi i32 [ [[TMP1102]], [[COND_TRUE2575]] ], [ [[TMP1103]], [[COND_FALSE2576]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2578]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1104:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1105:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2579:%.*]] = icmp slt i32 [[TMP1104]], [[TMP1105]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2579]], label [[COND_TRUE2581:%.*]], label [[COND_FALSE2582:%.*]]
// SIMD-ONLY0:       cond.true2581:
// SIMD-ONLY0-NEXT:    [[TMP1106:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2583:%.*]]
// SIMD-ONLY0:       cond.false2582:
// SIMD-ONLY0-NEXT:    [[TMP1107:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2583]]
// SIMD-ONLY0:       cond.end2583:
// SIMD-ONLY0-NEXT:    [[COND2584:%.*]] = phi i32 [ [[TMP1106]], [[COND_TRUE2581]] ], [ [[TMP1107]], [[COND_FALSE2582]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2584]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1108:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1109:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2585:%.*]] = icmp sgt i32 [[TMP1108]], [[TMP1109]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2585]], label [[IF_THEN2587:%.*]], label [[IF_END2588:%.*]]
// SIMD-ONLY0:       if.then2587:
// SIMD-ONLY0-NEXT:    [[TMP1110:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1110]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2588]]
// SIMD-ONLY0:       if.end2588:
// SIMD-ONLY0-NEXT:    [[TMP1111:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1112:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2589:%.*]] = icmp slt i32 [[TMP1111]], [[TMP1112]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2589]], label [[IF_THEN2591:%.*]], label [[IF_END2592:%.*]]
// SIMD-ONLY0:       if.then2591:
// SIMD-ONLY0-NEXT:    [[TMP1113:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1113]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2592]]
// SIMD-ONLY0:       if.end2592:
// SIMD-ONLY0-NEXT:    [[TMP1114:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1115:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2593:%.*]] = icmp sgt i32 [[TMP1114]], [[TMP1115]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2593]], label [[IF_THEN2595:%.*]], label [[IF_END2596:%.*]]
// SIMD-ONLY0:       if.then2595:
// SIMD-ONLY0-NEXT:    [[TMP1116:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1116]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2596]]
// SIMD-ONLY0:       if.end2596:
// SIMD-ONLY0-NEXT:    [[TMP1117:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1118:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2597:%.*]] = icmp slt i32 [[TMP1117]], [[TMP1118]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2597]], label [[IF_THEN2599:%.*]], label [[IF_END2600:%.*]]
// SIMD-ONLY0:       if.then2599:
// SIMD-ONLY0-NEXT:    [[TMP1119:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1119]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2600]]
// SIMD-ONLY0:       if.end2600:
// SIMD-ONLY0-NEXT:    [[TMP1120:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1121:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2601:%.*]] = icmp eq i32 [[TMP1120]], [[TMP1121]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2601]], label [[COND_TRUE2603:%.*]], label [[COND_FALSE2604:%.*]]
// SIMD-ONLY0:       cond.true2603:
// SIMD-ONLY0-NEXT:    [[TMP1122:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2605:%.*]]
// SIMD-ONLY0:       cond.false2604:
// SIMD-ONLY0-NEXT:    [[TMP1123:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2605]]
// SIMD-ONLY0:       cond.end2605:
// SIMD-ONLY0-NEXT:    [[COND2606:%.*]] = phi i32 [ [[TMP1122]], [[COND_TRUE2603]] ], [ [[TMP1123]], [[COND_FALSE2604]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2606]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1124:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1125:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2607:%.*]] = icmp eq i32 [[TMP1124]], [[TMP1125]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2607]], label [[COND_TRUE2609:%.*]], label [[COND_FALSE2610:%.*]]
// SIMD-ONLY0:       cond.true2609:
// SIMD-ONLY0-NEXT:    [[TMP1126:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2611:%.*]]
// SIMD-ONLY0:       cond.false2610:
// SIMD-ONLY0-NEXT:    [[TMP1127:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2611]]
// SIMD-ONLY0:       cond.end2611:
// SIMD-ONLY0-NEXT:    [[COND2612:%.*]] = phi i32 [ [[TMP1126]], [[COND_TRUE2609]] ], [ [[TMP1127]], [[COND_FALSE2610]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2612]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1128:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1129:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2613:%.*]] = icmp eq i32 [[TMP1128]], [[TMP1129]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2613]], label [[IF_THEN2615:%.*]], label [[IF_END2616:%.*]]
// SIMD-ONLY0:       if.then2615:
// SIMD-ONLY0-NEXT:    [[TMP1130:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1130]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2616]]
// SIMD-ONLY0:       if.end2616:
// SIMD-ONLY0-NEXT:    [[TMP1131:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1132:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2617:%.*]] = icmp eq i32 [[TMP1131]], [[TMP1132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2617]], label [[IF_THEN2619:%.*]], label [[IF_END2620:%.*]]
// SIMD-ONLY0:       if.then2619:
// SIMD-ONLY0-NEXT:    [[TMP1133:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1133]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2620]]
// SIMD-ONLY0:       if.end2620:
// SIMD-ONLY0-NEXT:    [[TMP1134:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1135:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2621:%.*]] = icmp ugt i32 [[TMP1134]], [[TMP1135]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2621]], label [[COND_TRUE2623:%.*]], label [[COND_FALSE2624:%.*]]
// SIMD-ONLY0:       cond.true2623:
// SIMD-ONLY0-NEXT:    [[TMP1136:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2625:%.*]]
// SIMD-ONLY0:       cond.false2624:
// SIMD-ONLY0-NEXT:    [[TMP1137:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2625]]
// SIMD-ONLY0:       cond.end2625:
// SIMD-ONLY0-NEXT:    [[COND2626:%.*]] = phi i32 [ [[TMP1136]], [[COND_TRUE2623]] ], [ [[TMP1137]], [[COND_FALSE2624]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2626]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1138:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1139:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2627:%.*]] = icmp ult i32 [[TMP1138]], [[TMP1139]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2627]], label [[COND_TRUE2629:%.*]], label [[COND_FALSE2630:%.*]]
// SIMD-ONLY0:       cond.true2629:
// SIMD-ONLY0-NEXT:    [[TMP1140:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2631:%.*]]
// SIMD-ONLY0:       cond.false2630:
// SIMD-ONLY0-NEXT:    [[TMP1141:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2631]]
// SIMD-ONLY0:       cond.end2631:
// SIMD-ONLY0-NEXT:    [[COND2632:%.*]] = phi i32 [ [[TMP1140]], [[COND_TRUE2629]] ], [ [[TMP1141]], [[COND_FALSE2630]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2632]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1142:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1143:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2633:%.*]] = icmp ugt i32 [[TMP1142]], [[TMP1143]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2633]], label [[COND_TRUE2635:%.*]], label [[COND_FALSE2636:%.*]]
// SIMD-ONLY0:       cond.true2635:
// SIMD-ONLY0-NEXT:    [[TMP1144:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2637:%.*]]
// SIMD-ONLY0:       cond.false2636:
// SIMD-ONLY0-NEXT:    [[TMP1145:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2637]]
// SIMD-ONLY0:       cond.end2637:
// SIMD-ONLY0-NEXT:    [[COND2638:%.*]] = phi i32 [ [[TMP1144]], [[COND_TRUE2635]] ], [ [[TMP1145]], [[COND_FALSE2636]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2638]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1146:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1147:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2639:%.*]] = icmp ult i32 [[TMP1146]], [[TMP1147]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2639]], label [[COND_TRUE2641:%.*]], label [[COND_FALSE2642:%.*]]
// SIMD-ONLY0:       cond.true2641:
// SIMD-ONLY0-NEXT:    [[TMP1148:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2643:%.*]]
// SIMD-ONLY0:       cond.false2642:
// SIMD-ONLY0-NEXT:    [[TMP1149:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2643]]
// SIMD-ONLY0:       cond.end2643:
// SIMD-ONLY0-NEXT:    [[COND2644:%.*]] = phi i32 [ [[TMP1148]], [[COND_TRUE2641]] ], [ [[TMP1149]], [[COND_FALSE2642]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2644]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1150:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1151:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2645:%.*]] = icmp ugt i32 [[TMP1150]], [[TMP1151]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2645]], label [[IF_THEN2647:%.*]], label [[IF_END2648:%.*]]
// SIMD-ONLY0:       if.then2647:
// SIMD-ONLY0-NEXT:    [[TMP1152:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1152]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2648]]
// SIMD-ONLY0:       if.end2648:
// SIMD-ONLY0-NEXT:    [[TMP1153:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1154:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2649:%.*]] = icmp ult i32 [[TMP1153]], [[TMP1154]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2649]], label [[IF_THEN2651:%.*]], label [[IF_END2652:%.*]]
// SIMD-ONLY0:       if.then2651:
// SIMD-ONLY0-NEXT:    [[TMP1155:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1155]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2652]]
// SIMD-ONLY0:       if.end2652:
// SIMD-ONLY0-NEXT:    [[TMP1156:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1157:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2653:%.*]] = icmp ugt i32 [[TMP1156]], [[TMP1157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2653]], label [[IF_THEN2655:%.*]], label [[IF_END2656:%.*]]
// SIMD-ONLY0:       if.then2655:
// SIMD-ONLY0-NEXT:    [[TMP1158:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1158]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2656]]
// SIMD-ONLY0:       if.end2656:
// SIMD-ONLY0-NEXT:    [[TMP1159:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1160:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2657:%.*]] = icmp ult i32 [[TMP1159]], [[TMP1160]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2657]], label [[IF_THEN2659:%.*]], label [[IF_END2660:%.*]]
// SIMD-ONLY0:       if.then2659:
// SIMD-ONLY0-NEXT:    [[TMP1161:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1161]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2660]]
// SIMD-ONLY0:       if.end2660:
// SIMD-ONLY0-NEXT:    [[TMP1162:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1163:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2661:%.*]] = icmp eq i32 [[TMP1162]], [[TMP1163]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2661]], label [[COND_TRUE2663:%.*]], label [[COND_FALSE2664:%.*]]
// SIMD-ONLY0:       cond.true2663:
// SIMD-ONLY0-NEXT:    [[TMP1164:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2665:%.*]]
// SIMD-ONLY0:       cond.false2664:
// SIMD-ONLY0-NEXT:    [[TMP1165:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2665]]
// SIMD-ONLY0:       cond.end2665:
// SIMD-ONLY0-NEXT:    [[COND2666:%.*]] = phi i32 [ [[TMP1164]], [[COND_TRUE2663]] ], [ [[TMP1165]], [[COND_FALSE2664]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2666]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1166:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1167:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2667:%.*]] = icmp eq i32 [[TMP1166]], [[TMP1167]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2667]], label [[COND_TRUE2669:%.*]], label [[COND_FALSE2670:%.*]]
// SIMD-ONLY0:       cond.true2669:
// SIMD-ONLY0-NEXT:    [[TMP1168:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2671:%.*]]
// SIMD-ONLY0:       cond.false2670:
// SIMD-ONLY0-NEXT:    [[TMP1169:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2671]]
// SIMD-ONLY0:       cond.end2671:
// SIMD-ONLY0-NEXT:    [[COND2672:%.*]] = phi i32 [ [[TMP1168]], [[COND_TRUE2669]] ], [ [[TMP1169]], [[COND_FALSE2670]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2672]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1170:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1171:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2673:%.*]] = icmp eq i32 [[TMP1170]], [[TMP1171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2673]], label [[IF_THEN2675:%.*]], label [[IF_END2676:%.*]]
// SIMD-ONLY0:       if.then2675:
// SIMD-ONLY0-NEXT:    [[TMP1172:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1172]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2676]]
// SIMD-ONLY0:       if.end2676:
// SIMD-ONLY0-NEXT:    [[TMP1173:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1174:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2677:%.*]] = icmp eq i32 [[TMP1173]], [[TMP1174]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2677]], label [[IF_THEN2679:%.*]], label [[IF_END2680:%.*]]
// SIMD-ONLY0:       if.then2679:
// SIMD-ONLY0-NEXT:    [[TMP1175:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1175]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2680]]
// SIMD-ONLY0:       if.end2680:
// SIMD-ONLY0-NEXT:    [[TMP1176:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1177:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2681:%.*]] = icmp sgt i32 [[TMP1176]], [[TMP1177]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2681]], label [[COND_TRUE2683:%.*]], label [[COND_FALSE2684:%.*]]
// SIMD-ONLY0:       cond.true2683:
// SIMD-ONLY0-NEXT:    [[TMP1178:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2685:%.*]]
// SIMD-ONLY0:       cond.false2684:
// SIMD-ONLY0-NEXT:    [[TMP1179:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2685]]
// SIMD-ONLY0:       cond.end2685:
// SIMD-ONLY0-NEXT:    [[COND2686:%.*]] = phi i32 [ [[TMP1178]], [[COND_TRUE2683]] ], [ [[TMP1179]], [[COND_FALSE2684]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2686]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1180:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1181:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2687:%.*]] = icmp slt i32 [[TMP1180]], [[TMP1181]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2687]], label [[COND_TRUE2689:%.*]], label [[COND_FALSE2690:%.*]]
// SIMD-ONLY0:       cond.true2689:
// SIMD-ONLY0-NEXT:    [[TMP1182:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2691:%.*]]
// SIMD-ONLY0:       cond.false2690:
// SIMD-ONLY0-NEXT:    [[TMP1183:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2691]]
// SIMD-ONLY0:       cond.end2691:
// SIMD-ONLY0-NEXT:    [[COND2692:%.*]] = phi i32 [ [[TMP1182]], [[COND_TRUE2689]] ], [ [[TMP1183]], [[COND_FALSE2690]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2692]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1184:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1185:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2693:%.*]] = icmp sgt i32 [[TMP1184]], [[TMP1185]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2693]], label [[COND_TRUE2695:%.*]], label [[COND_FALSE2696:%.*]]
// SIMD-ONLY0:       cond.true2695:
// SIMD-ONLY0-NEXT:    [[TMP1186:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2697:%.*]]
// SIMD-ONLY0:       cond.false2696:
// SIMD-ONLY0-NEXT:    [[TMP1187:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2697]]
// SIMD-ONLY0:       cond.end2697:
// SIMD-ONLY0-NEXT:    [[COND2698:%.*]] = phi i32 [ [[TMP1186]], [[COND_TRUE2695]] ], [ [[TMP1187]], [[COND_FALSE2696]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2698]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1188:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1189:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2699:%.*]] = icmp slt i32 [[TMP1188]], [[TMP1189]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2699]], label [[COND_TRUE2701:%.*]], label [[COND_FALSE2702:%.*]]
// SIMD-ONLY0:       cond.true2701:
// SIMD-ONLY0-NEXT:    [[TMP1190:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2703:%.*]]
// SIMD-ONLY0:       cond.false2702:
// SIMD-ONLY0-NEXT:    [[TMP1191:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2703]]
// SIMD-ONLY0:       cond.end2703:
// SIMD-ONLY0-NEXT:    [[COND2704:%.*]] = phi i32 [ [[TMP1190]], [[COND_TRUE2701]] ], [ [[TMP1191]], [[COND_FALSE2702]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2704]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1192:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1193:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2705:%.*]] = icmp sgt i32 [[TMP1192]], [[TMP1193]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2705]], label [[IF_THEN2707:%.*]], label [[IF_END2708:%.*]]
// SIMD-ONLY0:       if.then2707:
// SIMD-ONLY0-NEXT:    [[TMP1194:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1194]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2708]]
// SIMD-ONLY0:       if.end2708:
// SIMD-ONLY0-NEXT:    [[TMP1195:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1196:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2709:%.*]] = icmp slt i32 [[TMP1195]], [[TMP1196]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2709]], label [[IF_THEN2711:%.*]], label [[IF_END2712:%.*]]
// SIMD-ONLY0:       if.then2711:
// SIMD-ONLY0-NEXT:    [[TMP1197:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1197]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2712]]
// SIMD-ONLY0:       if.end2712:
// SIMD-ONLY0-NEXT:    [[TMP1198:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1199:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2713:%.*]] = icmp sgt i32 [[TMP1198]], [[TMP1199]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2713]], label [[IF_THEN2715:%.*]], label [[IF_END2716:%.*]]
// SIMD-ONLY0:       if.then2715:
// SIMD-ONLY0-NEXT:    [[TMP1200:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1200]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2716]]
// SIMD-ONLY0:       if.end2716:
// SIMD-ONLY0-NEXT:    [[TMP1201:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1202:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2717:%.*]] = icmp slt i32 [[TMP1201]], [[TMP1202]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2717]], label [[IF_THEN2719:%.*]], label [[IF_END2720:%.*]]
// SIMD-ONLY0:       if.then2719:
// SIMD-ONLY0-NEXT:    [[TMP1203:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1203]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2720]]
// SIMD-ONLY0:       if.end2720:
// SIMD-ONLY0-NEXT:    [[TMP1204:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1205:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2721:%.*]] = icmp eq i32 [[TMP1204]], [[TMP1205]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2721]], label [[COND_TRUE2723:%.*]], label [[COND_FALSE2724:%.*]]
// SIMD-ONLY0:       cond.true2723:
// SIMD-ONLY0-NEXT:    [[TMP1206:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2725:%.*]]
// SIMD-ONLY0:       cond.false2724:
// SIMD-ONLY0-NEXT:    [[TMP1207:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2725]]
// SIMD-ONLY0:       cond.end2725:
// SIMD-ONLY0-NEXT:    [[COND2726:%.*]] = phi i32 [ [[TMP1206]], [[COND_TRUE2723]] ], [ [[TMP1207]], [[COND_FALSE2724]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2726]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1208:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1209:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2727:%.*]] = icmp eq i32 [[TMP1208]], [[TMP1209]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2727]], label [[COND_TRUE2729:%.*]], label [[COND_FALSE2730:%.*]]
// SIMD-ONLY0:       cond.true2729:
// SIMD-ONLY0-NEXT:    [[TMP1210:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2731:%.*]]
// SIMD-ONLY0:       cond.false2730:
// SIMD-ONLY0-NEXT:    [[TMP1211:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2731]]
// SIMD-ONLY0:       cond.end2731:
// SIMD-ONLY0-NEXT:    [[COND2732:%.*]] = phi i32 [ [[TMP1210]], [[COND_TRUE2729]] ], [ [[TMP1211]], [[COND_FALSE2730]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2732]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1212:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1213:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2733:%.*]] = icmp eq i32 [[TMP1212]], [[TMP1213]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2733]], label [[IF_THEN2735:%.*]], label [[IF_END2736:%.*]]
// SIMD-ONLY0:       if.then2735:
// SIMD-ONLY0-NEXT:    [[TMP1214:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1214]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2736]]
// SIMD-ONLY0:       if.end2736:
// SIMD-ONLY0-NEXT:    [[TMP1215:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1216:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2737:%.*]] = icmp eq i32 [[TMP1215]], [[TMP1216]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2737]], label [[IF_THEN2739:%.*]], label [[IF_END2740:%.*]]
// SIMD-ONLY0:       if.then2739:
// SIMD-ONLY0-NEXT:    [[TMP1217:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1217]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2740]]
// SIMD-ONLY0:       if.end2740:
// SIMD-ONLY0-NEXT:    [[TMP1218:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1219:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2741:%.*]] = icmp ugt i32 [[TMP1218]], [[TMP1219]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2741]], label [[COND_TRUE2743:%.*]], label [[COND_FALSE2744:%.*]]
// SIMD-ONLY0:       cond.true2743:
// SIMD-ONLY0-NEXT:    [[TMP1220:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2745:%.*]]
// SIMD-ONLY0:       cond.false2744:
// SIMD-ONLY0-NEXT:    [[TMP1221:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2745]]
// SIMD-ONLY0:       cond.end2745:
// SIMD-ONLY0-NEXT:    [[COND2746:%.*]] = phi i32 [ [[TMP1220]], [[COND_TRUE2743]] ], [ [[TMP1221]], [[COND_FALSE2744]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2746]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1222:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1223:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2747:%.*]] = icmp ult i32 [[TMP1222]], [[TMP1223]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2747]], label [[COND_TRUE2749:%.*]], label [[COND_FALSE2750:%.*]]
// SIMD-ONLY0:       cond.true2749:
// SIMD-ONLY0-NEXT:    [[TMP1224:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2751:%.*]]
// SIMD-ONLY0:       cond.false2750:
// SIMD-ONLY0-NEXT:    [[TMP1225:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2751]]
// SIMD-ONLY0:       cond.end2751:
// SIMD-ONLY0-NEXT:    [[COND2752:%.*]] = phi i32 [ [[TMP1224]], [[COND_TRUE2749]] ], [ [[TMP1225]], [[COND_FALSE2750]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2752]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1226:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1227:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2753:%.*]] = icmp ugt i32 [[TMP1226]], [[TMP1227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2753]], label [[COND_TRUE2755:%.*]], label [[COND_FALSE2756:%.*]]
// SIMD-ONLY0:       cond.true2755:
// SIMD-ONLY0-NEXT:    [[TMP1228:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2757:%.*]]
// SIMD-ONLY0:       cond.false2756:
// SIMD-ONLY0-NEXT:    [[TMP1229:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2757]]
// SIMD-ONLY0:       cond.end2757:
// SIMD-ONLY0-NEXT:    [[COND2758:%.*]] = phi i32 [ [[TMP1228]], [[COND_TRUE2755]] ], [ [[TMP1229]], [[COND_FALSE2756]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2758]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1230:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1231:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2759:%.*]] = icmp ult i32 [[TMP1230]], [[TMP1231]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2759]], label [[COND_TRUE2761:%.*]], label [[COND_FALSE2762:%.*]]
// SIMD-ONLY0:       cond.true2761:
// SIMD-ONLY0-NEXT:    [[TMP1232:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2763:%.*]]
// SIMD-ONLY0:       cond.false2762:
// SIMD-ONLY0-NEXT:    [[TMP1233:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2763]]
// SIMD-ONLY0:       cond.end2763:
// SIMD-ONLY0-NEXT:    [[COND2764:%.*]] = phi i32 [ [[TMP1232]], [[COND_TRUE2761]] ], [ [[TMP1233]], [[COND_FALSE2762]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2764]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1234:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1235:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2765:%.*]] = icmp ugt i32 [[TMP1234]], [[TMP1235]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2765]], label [[IF_THEN2767:%.*]], label [[IF_END2768:%.*]]
// SIMD-ONLY0:       if.then2767:
// SIMD-ONLY0-NEXT:    [[TMP1236:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1236]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2768]]
// SIMD-ONLY0:       if.end2768:
// SIMD-ONLY0-NEXT:    [[TMP1237:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1238:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2769:%.*]] = icmp ult i32 [[TMP1237]], [[TMP1238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2769]], label [[IF_THEN2771:%.*]], label [[IF_END2772:%.*]]
// SIMD-ONLY0:       if.then2771:
// SIMD-ONLY0-NEXT:    [[TMP1239:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1239]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2772]]
// SIMD-ONLY0:       if.end2772:
// SIMD-ONLY0-NEXT:    [[TMP1240:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1241:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2773:%.*]] = icmp ugt i32 [[TMP1240]], [[TMP1241]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2773]], label [[IF_THEN2775:%.*]], label [[IF_END2776:%.*]]
// SIMD-ONLY0:       if.then2775:
// SIMD-ONLY0-NEXT:    [[TMP1242:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1242]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2776]]
// SIMD-ONLY0:       if.end2776:
// SIMD-ONLY0-NEXT:    [[TMP1243:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1244:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2777:%.*]] = icmp ult i32 [[TMP1243]], [[TMP1244]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2777]], label [[IF_THEN2779:%.*]], label [[IF_END2780:%.*]]
// SIMD-ONLY0:       if.then2779:
// SIMD-ONLY0-NEXT:    [[TMP1245:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1245]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2780]]
// SIMD-ONLY0:       if.end2780:
// SIMD-ONLY0-NEXT:    [[TMP1246:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1247:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2781:%.*]] = icmp eq i32 [[TMP1246]], [[TMP1247]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2781]], label [[COND_TRUE2783:%.*]], label [[COND_FALSE2784:%.*]]
// SIMD-ONLY0:       cond.true2783:
// SIMD-ONLY0-NEXT:    [[TMP1248:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2785:%.*]]
// SIMD-ONLY0:       cond.false2784:
// SIMD-ONLY0-NEXT:    [[TMP1249:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2785]]
// SIMD-ONLY0:       cond.end2785:
// SIMD-ONLY0-NEXT:    [[COND2786:%.*]] = phi i32 [ [[TMP1248]], [[COND_TRUE2783]] ], [ [[TMP1249]], [[COND_FALSE2784]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2786]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1250:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1251:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2787:%.*]] = icmp eq i32 [[TMP1250]], [[TMP1251]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2787]], label [[COND_TRUE2789:%.*]], label [[COND_FALSE2790:%.*]]
// SIMD-ONLY0:       cond.true2789:
// SIMD-ONLY0-NEXT:    [[TMP1252:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2791:%.*]]
// SIMD-ONLY0:       cond.false2790:
// SIMD-ONLY0-NEXT:    [[TMP1253:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2791]]
// SIMD-ONLY0:       cond.end2791:
// SIMD-ONLY0-NEXT:    [[COND2792:%.*]] = phi i32 [ [[TMP1252]], [[COND_TRUE2789]] ], [ [[TMP1253]], [[COND_FALSE2790]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2792]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1254:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1255:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2793:%.*]] = icmp eq i32 [[TMP1254]], [[TMP1255]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2793]], label [[IF_THEN2795:%.*]], label [[IF_END2796:%.*]]
// SIMD-ONLY0:       if.then2795:
// SIMD-ONLY0-NEXT:    [[TMP1256:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1256]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2796]]
// SIMD-ONLY0:       if.end2796:
// SIMD-ONLY0-NEXT:    [[TMP1257:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1258:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2797:%.*]] = icmp eq i32 [[TMP1257]], [[TMP1258]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2797]], label [[IF_THEN2799:%.*]], label [[IF_END2800:%.*]]
// SIMD-ONLY0:       if.then2799:
// SIMD-ONLY0-NEXT:    [[TMP1259:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1259]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2800]]
// SIMD-ONLY0:       if.end2800:
// SIMD-ONLY0-NEXT:    [[TMP1260:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1261:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2801:%.*]] = icmp sgt i32 [[TMP1260]], [[TMP1261]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2801]], label [[COND_TRUE2803:%.*]], label [[COND_FALSE2804:%.*]]
// SIMD-ONLY0:       cond.true2803:
// SIMD-ONLY0-NEXT:    [[TMP1262:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2805:%.*]]
// SIMD-ONLY0:       cond.false2804:
// SIMD-ONLY0-NEXT:    [[TMP1263:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2805]]
// SIMD-ONLY0:       cond.end2805:
// SIMD-ONLY0-NEXT:    [[COND2806:%.*]] = phi i32 [ [[TMP1262]], [[COND_TRUE2803]] ], [ [[TMP1263]], [[COND_FALSE2804]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2806]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1264:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1265:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2807:%.*]] = icmp slt i32 [[TMP1264]], [[TMP1265]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2807]], label [[COND_TRUE2809:%.*]], label [[COND_FALSE2810:%.*]]
// SIMD-ONLY0:       cond.true2809:
// SIMD-ONLY0-NEXT:    [[TMP1266:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2811:%.*]]
// SIMD-ONLY0:       cond.false2810:
// SIMD-ONLY0-NEXT:    [[TMP1267:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2811]]
// SIMD-ONLY0:       cond.end2811:
// SIMD-ONLY0-NEXT:    [[COND2812:%.*]] = phi i32 [ [[TMP1266]], [[COND_TRUE2809]] ], [ [[TMP1267]], [[COND_FALSE2810]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2812]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1268:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1269:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2813:%.*]] = icmp sgt i32 [[TMP1268]], [[TMP1269]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2813]], label [[COND_TRUE2815:%.*]], label [[COND_FALSE2816:%.*]]
// SIMD-ONLY0:       cond.true2815:
// SIMD-ONLY0-NEXT:    [[TMP1270:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2817:%.*]]
// SIMD-ONLY0:       cond.false2816:
// SIMD-ONLY0-NEXT:    [[TMP1271:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2817]]
// SIMD-ONLY0:       cond.end2817:
// SIMD-ONLY0-NEXT:    [[COND2818:%.*]] = phi i32 [ [[TMP1270]], [[COND_TRUE2815]] ], [ [[TMP1271]], [[COND_FALSE2816]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2818]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1272:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1273:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2819:%.*]] = icmp slt i32 [[TMP1272]], [[TMP1273]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2819]], label [[COND_TRUE2821:%.*]], label [[COND_FALSE2822:%.*]]
// SIMD-ONLY0:       cond.true2821:
// SIMD-ONLY0-NEXT:    [[TMP1274:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2823:%.*]]
// SIMD-ONLY0:       cond.false2822:
// SIMD-ONLY0-NEXT:    [[TMP1275:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2823]]
// SIMD-ONLY0:       cond.end2823:
// SIMD-ONLY0-NEXT:    [[COND2824:%.*]] = phi i32 [ [[TMP1274]], [[COND_TRUE2821]] ], [ [[TMP1275]], [[COND_FALSE2822]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2824]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1276:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1277:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2825:%.*]] = icmp sgt i32 [[TMP1276]], [[TMP1277]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2825]], label [[IF_THEN2827:%.*]], label [[IF_END2828:%.*]]
// SIMD-ONLY0:       if.then2827:
// SIMD-ONLY0-NEXT:    [[TMP1278:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1278]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2828]]
// SIMD-ONLY0:       if.end2828:
// SIMD-ONLY0-NEXT:    [[TMP1279:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1280:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2829:%.*]] = icmp slt i32 [[TMP1279]], [[TMP1280]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2829]], label [[IF_THEN2831:%.*]], label [[IF_END2832:%.*]]
// SIMD-ONLY0:       if.then2831:
// SIMD-ONLY0-NEXT:    [[TMP1281:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1281]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2832]]
// SIMD-ONLY0:       if.end2832:
// SIMD-ONLY0-NEXT:    [[TMP1282:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1283:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2833:%.*]] = icmp sgt i32 [[TMP1282]], [[TMP1283]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2833]], label [[IF_THEN2835:%.*]], label [[IF_END2836:%.*]]
// SIMD-ONLY0:       if.then2835:
// SIMD-ONLY0-NEXT:    [[TMP1284:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1284]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2836]]
// SIMD-ONLY0:       if.end2836:
// SIMD-ONLY0-NEXT:    [[TMP1285:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1286:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2837:%.*]] = icmp slt i32 [[TMP1285]], [[TMP1286]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2837]], label [[IF_THEN2839:%.*]], label [[IF_END2840:%.*]]
// SIMD-ONLY0:       if.then2839:
// SIMD-ONLY0-NEXT:    [[TMP1287:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1287]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2840]]
// SIMD-ONLY0:       if.end2840:
// SIMD-ONLY0-NEXT:    [[TMP1288:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1289:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2841:%.*]] = icmp eq i32 [[TMP1288]], [[TMP1289]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2841]], label [[COND_TRUE2843:%.*]], label [[COND_FALSE2844:%.*]]
// SIMD-ONLY0:       cond.true2843:
// SIMD-ONLY0-NEXT:    [[TMP1290:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2845:%.*]]
// SIMD-ONLY0:       cond.false2844:
// SIMD-ONLY0-NEXT:    [[TMP1291:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2845]]
// SIMD-ONLY0:       cond.end2845:
// SIMD-ONLY0-NEXT:    [[COND2846:%.*]] = phi i32 [ [[TMP1290]], [[COND_TRUE2843]] ], [ [[TMP1291]], [[COND_FALSE2844]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2846]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1292:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1293:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2847:%.*]] = icmp eq i32 [[TMP1292]], [[TMP1293]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2847]], label [[COND_TRUE2849:%.*]], label [[COND_FALSE2850:%.*]]
// SIMD-ONLY0:       cond.true2849:
// SIMD-ONLY0-NEXT:    [[TMP1294:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2851:%.*]]
// SIMD-ONLY0:       cond.false2850:
// SIMD-ONLY0-NEXT:    [[TMP1295:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2851]]
// SIMD-ONLY0:       cond.end2851:
// SIMD-ONLY0-NEXT:    [[COND2852:%.*]] = phi i32 [ [[TMP1294]], [[COND_TRUE2849]] ], [ [[TMP1295]], [[COND_FALSE2850]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2852]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1296:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1297:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2853:%.*]] = icmp eq i32 [[TMP1296]], [[TMP1297]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2853]], label [[IF_THEN2855:%.*]], label [[IF_END2856:%.*]]
// SIMD-ONLY0:       if.then2855:
// SIMD-ONLY0-NEXT:    [[TMP1298:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1298]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2856]]
// SIMD-ONLY0:       if.end2856:
// SIMD-ONLY0-NEXT:    [[TMP1299:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1300:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2857:%.*]] = icmp eq i32 [[TMP1299]], [[TMP1300]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2857]], label [[IF_THEN2859:%.*]], label [[IF_END2860:%.*]]
// SIMD-ONLY0:       if.then2859:
// SIMD-ONLY0-NEXT:    [[TMP1301:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1301]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2860]]
// SIMD-ONLY0:       if.end2860:
// SIMD-ONLY0-NEXT:    [[TMP1302:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1303:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2861:%.*]] = icmp ugt i32 [[TMP1302]], [[TMP1303]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2861]], label [[COND_TRUE2863:%.*]], label [[COND_FALSE2864:%.*]]
// SIMD-ONLY0:       cond.true2863:
// SIMD-ONLY0-NEXT:    [[TMP1304:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2865:%.*]]
// SIMD-ONLY0:       cond.false2864:
// SIMD-ONLY0-NEXT:    [[TMP1305:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2865]]
// SIMD-ONLY0:       cond.end2865:
// SIMD-ONLY0-NEXT:    [[COND2866:%.*]] = phi i32 [ [[TMP1304]], [[COND_TRUE2863]] ], [ [[TMP1305]], [[COND_FALSE2864]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2866]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1306:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1307:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2867:%.*]] = icmp ult i32 [[TMP1306]], [[TMP1307]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2867]], label [[COND_TRUE2869:%.*]], label [[COND_FALSE2870:%.*]]
// SIMD-ONLY0:       cond.true2869:
// SIMD-ONLY0-NEXT:    [[TMP1308:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2871:%.*]]
// SIMD-ONLY0:       cond.false2870:
// SIMD-ONLY0-NEXT:    [[TMP1309:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2871]]
// SIMD-ONLY0:       cond.end2871:
// SIMD-ONLY0-NEXT:    [[COND2872:%.*]] = phi i32 [ [[TMP1308]], [[COND_TRUE2869]] ], [ [[TMP1309]], [[COND_FALSE2870]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2872]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1310:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1311:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2873:%.*]] = icmp ugt i32 [[TMP1310]], [[TMP1311]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2873]], label [[COND_TRUE2875:%.*]], label [[COND_FALSE2876:%.*]]
// SIMD-ONLY0:       cond.true2875:
// SIMD-ONLY0-NEXT:    [[TMP1312:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2877:%.*]]
// SIMD-ONLY0:       cond.false2876:
// SIMD-ONLY0-NEXT:    [[TMP1313:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2877]]
// SIMD-ONLY0:       cond.end2877:
// SIMD-ONLY0-NEXT:    [[COND2878:%.*]] = phi i32 [ [[TMP1312]], [[COND_TRUE2875]] ], [ [[TMP1313]], [[COND_FALSE2876]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2878]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1314:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1315:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2879:%.*]] = icmp ult i32 [[TMP1314]], [[TMP1315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2879]], label [[COND_TRUE2881:%.*]], label [[COND_FALSE2882:%.*]]
// SIMD-ONLY0:       cond.true2881:
// SIMD-ONLY0-NEXT:    [[TMP1316:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2883:%.*]]
// SIMD-ONLY0:       cond.false2882:
// SIMD-ONLY0-NEXT:    [[TMP1317:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2883]]
// SIMD-ONLY0:       cond.end2883:
// SIMD-ONLY0-NEXT:    [[COND2884:%.*]] = phi i32 [ [[TMP1316]], [[COND_TRUE2881]] ], [ [[TMP1317]], [[COND_FALSE2882]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2884]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1318:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1319:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2885:%.*]] = icmp ugt i32 [[TMP1318]], [[TMP1319]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2885]], label [[IF_THEN2887:%.*]], label [[IF_END2888:%.*]]
// SIMD-ONLY0:       if.then2887:
// SIMD-ONLY0-NEXT:    [[TMP1320:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1320]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2888]]
// SIMD-ONLY0:       if.end2888:
// SIMD-ONLY0-NEXT:    [[TMP1321:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1322:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2889:%.*]] = icmp ult i32 [[TMP1321]], [[TMP1322]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2889]], label [[IF_THEN2891:%.*]], label [[IF_END2892:%.*]]
// SIMD-ONLY0:       if.then2891:
// SIMD-ONLY0-NEXT:    [[TMP1323:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1323]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2892]]
// SIMD-ONLY0:       if.end2892:
// SIMD-ONLY0-NEXT:    [[TMP1324:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1325:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2893:%.*]] = icmp ugt i32 [[TMP1324]], [[TMP1325]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2893]], label [[IF_THEN2895:%.*]], label [[IF_END2896:%.*]]
// SIMD-ONLY0:       if.then2895:
// SIMD-ONLY0-NEXT:    [[TMP1326:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1326]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2896]]
// SIMD-ONLY0:       if.end2896:
// SIMD-ONLY0-NEXT:    [[TMP1327:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1328:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2897:%.*]] = icmp ult i32 [[TMP1327]], [[TMP1328]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2897]], label [[IF_THEN2899:%.*]], label [[IF_END2900:%.*]]
// SIMD-ONLY0:       if.then2899:
// SIMD-ONLY0-NEXT:    [[TMP1329:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1329]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2900]]
// SIMD-ONLY0:       if.end2900:
// SIMD-ONLY0-NEXT:    [[TMP1330:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1331:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2901:%.*]] = icmp eq i32 [[TMP1330]], [[TMP1331]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2901]], label [[COND_TRUE2903:%.*]], label [[COND_FALSE2904:%.*]]
// SIMD-ONLY0:       cond.true2903:
// SIMD-ONLY0-NEXT:    [[TMP1332:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2905:%.*]]
// SIMD-ONLY0:       cond.false2904:
// SIMD-ONLY0-NEXT:    [[TMP1333:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2905]]
// SIMD-ONLY0:       cond.end2905:
// SIMD-ONLY0-NEXT:    [[COND2906:%.*]] = phi i32 [ [[TMP1332]], [[COND_TRUE2903]] ], [ [[TMP1333]], [[COND_FALSE2904]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2906]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1334:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1335:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2907:%.*]] = icmp eq i32 [[TMP1334]], [[TMP1335]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2907]], label [[COND_TRUE2909:%.*]], label [[COND_FALSE2910:%.*]]
// SIMD-ONLY0:       cond.true2909:
// SIMD-ONLY0-NEXT:    [[TMP1336:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2911:%.*]]
// SIMD-ONLY0:       cond.false2910:
// SIMD-ONLY0-NEXT:    [[TMP1337:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2911]]
// SIMD-ONLY0:       cond.end2911:
// SIMD-ONLY0-NEXT:    [[COND2912:%.*]] = phi i32 [ [[TMP1336]], [[COND_TRUE2909]] ], [ [[TMP1337]], [[COND_FALSE2910]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2912]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1338:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1339:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2913:%.*]] = icmp eq i32 [[TMP1338]], [[TMP1339]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2913]], label [[IF_THEN2915:%.*]], label [[IF_END2916:%.*]]
// SIMD-ONLY0:       if.then2915:
// SIMD-ONLY0-NEXT:    [[TMP1340:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1340]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2916]]
// SIMD-ONLY0:       if.end2916:
// SIMD-ONLY0-NEXT:    [[TMP1341:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1342:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2917:%.*]] = icmp eq i32 [[TMP1341]], [[TMP1342]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2917]], label [[IF_THEN2919:%.*]], label [[IF_END2920:%.*]]
// SIMD-ONLY0:       if.then2919:
// SIMD-ONLY0-NEXT:    [[TMP1343:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1343]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2920]]
// SIMD-ONLY0:       if.end2920:
// SIMD-ONLY0-NEXT:    [[TMP1344:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1345:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2921:%.*]] = icmp sgt i32 [[TMP1344]], [[TMP1345]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2921]], label [[COND_TRUE2923:%.*]], label [[COND_FALSE2924:%.*]]
// SIMD-ONLY0:       cond.true2923:
// SIMD-ONLY0-NEXT:    [[TMP1346:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2925:%.*]]
// SIMD-ONLY0:       cond.false2924:
// SIMD-ONLY0-NEXT:    [[TMP1347:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2925]]
// SIMD-ONLY0:       cond.end2925:
// SIMD-ONLY0-NEXT:    [[COND2926:%.*]] = phi i32 [ [[TMP1346]], [[COND_TRUE2923]] ], [ [[TMP1347]], [[COND_FALSE2924]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2926]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1348:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1349:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2927:%.*]] = icmp slt i32 [[TMP1348]], [[TMP1349]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2927]], label [[COND_TRUE2929:%.*]], label [[COND_FALSE2930:%.*]]
// SIMD-ONLY0:       cond.true2929:
// SIMD-ONLY0-NEXT:    [[TMP1350:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2931:%.*]]
// SIMD-ONLY0:       cond.false2930:
// SIMD-ONLY0-NEXT:    [[TMP1351:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2931]]
// SIMD-ONLY0:       cond.end2931:
// SIMD-ONLY0-NEXT:    [[COND2932:%.*]] = phi i32 [ [[TMP1350]], [[COND_TRUE2929]] ], [ [[TMP1351]], [[COND_FALSE2930]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2932]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1352:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1353:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2933:%.*]] = icmp sgt i32 [[TMP1352]], [[TMP1353]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2933]], label [[COND_TRUE2935:%.*]], label [[COND_FALSE2936:%.*]]
// SIMD-ONLY0:       cond.true2935:
// SIMD-ONLY0-NEXT:    [[TMP1354:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2937:%.*]]
// SIMD-ONLY0:       cond.false2936:
// SIMD-ONLY0-NEXT:    [[TMP1355:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2937]]
// SIMD-ONLY0:       cond.end2937:
// SIMD-ONLY0-NEXT:    [[COND2938:%.*]] = phi i32 [ [[TMP1354]], [[COND_TRUE2935]] ], [ [[TMP1355]], [[COND_FALSE2936]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2938]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1356:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1357:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2939:%.*]] = icmp slt i32 [[TMP1356]], [[TMP1357]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2939]], label [[COND_TRUE2941:%.*]], label [[COND_FALSE2942:%.*]]
// SIMD-ONLY0:       cond.true2941:
// SIMD-ONLY0-NEXT:    [[TMP1358:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2943:%.*]]
// SIMD-ONLY0:       cond.false2942:
// SIMD-ONLY0-NEXT:    [[TMP1359:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2943]]
// SIMD-ONLY0:       cond.end2943:
// SIMD-ONLY0-NEXT:    [[COND2944:%.*]] = phi i32 [ [[TMP1358]], [[COND_TRUE2941]] ], [ [[TMP1359]], [[COND_FALSE2942]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2944]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1360:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1361:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2945:%.*]] = icmp sgt i32 [[TMP1360]], [[TMP1361]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2945]], label [[IF_THEN2947:%.*]], label [[IF_END2948:%.*]]
// SIMD-ONLY0:       if.then2947:
// SIMD-ONLY0-NEXT:    [[TMP1362:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1362]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2948]]
// SIMD-ONLY0:       if.end2948:
// SIMD-ONLY0-NEXT:    [[TMP1363:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1364:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2949:%.*]] = icmp slt i32 [[TMP1363]], [[TMP1364]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2949]], label [[IF_THEN2951:%.*]], label [[IF_END2952:%.*]]
// SIMD-ONLY0:       if.then2951:
// SIMD-ONLY0-NEXT:    [[TMP1365:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1365]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2952]]
// SIMD-ONLY0:       if.end2952:
// SIMD-ONLY0-NEXT:    [[TMP1366:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1367:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2953:%.*]] = icmp sgt i32 [[TMP1366]], [[TMP1367]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2953]], label [[IF_THEN2955:%.*]], label [[IF_END2956:%.*]]
// SIMD-ONLY0:       if.then2955:
// SIMD-ONLY0-NEXT:    [[TMP1368:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1368]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2956]]
// SIMD-ONLY0:       if.end2956:
// SIMD-ONLY0-NEXT:    [[TMP1369:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1370:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2957:%.*]] = icmp slt i32 [[TMP1369]], [[TMP1370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2957]], label [[IF_THEN2959:%.*]], label [[IF_END2960:%.*]]
// SIMD-ONLY0:       if.then2959:
// SIMD-ONLY0-NEXT:    [[TMP1371:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1371]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2960]]
// SIMD-ONLY0:       if.end2960:
// SIMD-ONLY0-NEXT:    [[TMP1372:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1373:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2961:%.*]] = icmp eq i32 [[TMP1372]], [[TMP1373]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2961]], label [[COND_TRUE2963:%.*]], label [[COND_FALSE2964:%.*]]
// SIMD-ONLY0:       cond.true2963:
// SIMD-ONLY0-NEXT:    [[TMP1374:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2965:%.*]]
// SIMD-ONLY0:       cond.false2964:
// SIMD-ONLY0-NEXT:    [[TMP1375:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2965]]
// SIMD-ONLY0:       cond.end2965:
// SIMD-ONLY0-NEXT:    [[COND2966:%.*]] = phi i32 [ [[TMP1374]], [[COND_TRUE2963]] ], [ [[TMP1375]], [[COND_FALSE2964]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2966]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1376:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1377:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2967:%.*]] = icmp eq i32 [[TMP1376]], [[TMP1377]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2967]], label [[COND_TRUE2969:%.*]], label [[COND_FALSE2970:%.*]]
// SIMD-ONLY0:       cond.true2969:
// SIMD-ONLY0-NEXT:    [[TMP1378:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2971:%.*]]
// SIMD-ONLY0:       cond.false2970:
// SIMD-ONLY0-NEXT:    [[TMP1379:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2971]]
// SIMD-ONLY0:       cond.end2971:
// SIMD-ONLY0-NEXT:    [[COND2972:%.*]] = phi i32 [ [[TMP1378]], [[COND_TRUE2969]] ], [ [[TMP1379]], [[COND_FALSE2970]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2972]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1380:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1381:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2973:%.*]] = icmp eq i32 [[TMP1380]], [[TMP1381]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2973]], label [[IF_THEN2975:%.*]], label [[IF_END2976:%.*]]
// SIMD-ONLY0:       if.then2975:
// SIMD-ONLY0-NEXT:    [[TMP1382:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1382]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2976]]
// SIMD-ONLY0:       if.end2976:
// SIMD-ONLY0-NEXT:    [[TMP1383:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1384:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2977:%.*]] = icmp eq i32 [[TMP1383]], [[TMP1384]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2977]], label [[IF_THEN2979:%.*]], label [[IF_END2980:%.*]]
// SIMD-ONLY0:       if.then2979:
// SIMD-ONLY0-NEXT:    [[TMP1385:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1385]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2980]]
// SIMD-ONLY0:       if.end2980:
// SIMD-ONLY0-NEXT:    [[TMP1386:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1387:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2981:%.*]] = icmp ugt i32 [[TMP1386]], [[TMP1387]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2981]], label [[COND_TRUE2983:%.*]], label [[COND_FALSE2984:%.*]]
// SIMD-ONLY0:       cond.true2983:
// SIMD-ONLY0-NEXT:    [[TMP1388:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2985:%.*]]
// SIMD-ONLY0:       cond.false2984:
// SIMD-ONLY0-NEXT:    [[TMP1389:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2985]]
// SIMD-ONLY0:       cond.end2985:
// SIMD-ONLY0-NEXT:    [[COND2986:%.*]] = phi i32 [ [[TMP1388]], [[COND_TRUE2983]] ], [ [[TMP1389]], [[COND_FALSE2984]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2986]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1390:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1391:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2987:%.*]] = icmp ult i32 [[TMP1390]], [[TMP1391]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2987]], label [[COND_TRUE2989:%.*]], label [[COND_FALSE2990:%.*]]
// SIMD-ONLY0:       cond.true2989:
// SIMD-ONLY0-NEXT:    [[TMP1392:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2991:%.*]]
// SIMD-ONLY0:       cond.false2990:
// SIMD-ONLY0-NEXT:    [[TMP1393:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2991]]
// SIMD-ONLY0:       cond.end2991:
// SIMD-ONLY0-NEXT:    [[COND2992:%.*]] = phi i32 [ [[TMP1392]], [[COND_TRUE2989]] ], [ [[TMP1393]], [[COND_FALSE2990]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2992]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1394:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1395:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2993:%.*]] = icmp ugt i32 [[TMP1394]], [[TMP1395]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2993]], label [[COND_TRUE2995:%.*]], label [[COND_FALSE2996:%.*]]
// SIMD-ONLY0:       cond.true2995:
// SIMD-ONLY0-NEXT:    [[TMP1396:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2997:%.*]]
// SIMD-ONLY0:       cond.false2996:
// SIMD-ONLY0-NEXT:    [[TMP1397:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END2997]]
// SIMD-ONLY0:       cond.end2997:
// SIMD-ONLY0-NEXT:    [[COND2998:%.*]] = phi i32 [ [[TMP1396]], [[COND_TRUE2995]] ], [ [[TMP1397]], [[COND_FALSE2996]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND2998]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1398:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1399:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2999:%.*]] = icmp ult i32 [[TMP1398]], [[TMP1399]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2999]], label [[COND_TRUE3001:%.*]], label [[COND_FALSE3002:%.*]]
// SIMD-ONLY0:       cond.true3001:
// SIMD-ONLY0-NEXT:    [[TMP1400:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3003:%.*]]
// SIMD-ONLY0:       cond.false3002:
// SIMD-ONLY0-NEXT:    [[TMP1401:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3003]]
// SIMD-ONLY0:       cond.end3003:
// SIMD-ONLY0-NEXT:    [[COND3004:%.*]] = phi i32 [ [[TMP1400]], [[COND_TRUE3001]] ], [ [[TMP1401]], [[COND_FALSE3002]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3004]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1402:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1403:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3005:%.*]] = icmp ugt i32 [[TMP1402]], [[TMP1403]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3005]], label [[IF_THEN3007:%.*]], label [[IF_END3008:%.*]]
// SIMD-ONLY0:       if.then3007:
// SIMD-ONLY0-NEXT:    [[TMP1404:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1404]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3008]]
// SIMD-ONLY0:       if.end3008:
// SIMD-ONLY0-NEXT:    [[TMP1405:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1406:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3009:%.*]] = icmp ult i32 [[TMP1405]], [[TMP1406]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3009]], label [[IF_THEN3011:%.*]], label [[IF_END3012:%.*]]
// SIMD-ONLY0:       if.then3011:
// SIMD-ONLY0-NEXT:    [[TMP1407:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1407]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3012]]
// SIMD-ONLY0:       if.end3012:
// SIMD-ONLY0-NEXT:    [[TMP1408:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1409:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3013:%.*]] = icmp ugt i32 [[TMP1408]], [[TMP1409]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3013]], label [[IF_THEN3015:%.*]], label [[IF_END3016:%.*]]
// SIMD-ONLY0:       if.then3015:
// SIMD-ONLY0-NEXT:    [[TMP1410:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1410]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3016]]
// SIMD-ONLY0:       if.end3016:
// SIMD-ONLY0-NEXT:    [[TMP1411:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1412:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3017:%.*]] = icmp ult i32 [[TMP1411]], [[TMP1412]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3017]], label [[IF_THEN3019:%.*]], label [[IF_END3020:%.*]]
// SIMD-ONLY0:       if.then3019:
// SIMD-ONLY0-NEXT:    [[TMP1413:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1413]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3020]]
// SIMD-ONLY0:       if.end3020:
// SIMD-ONLY0-NEXT:    [[TMP1414:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1415:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3021:%.*]] = icmp eq i32 [[TMP1414]], [[TMP1415]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3021]], label [[COND_TRUE3023:%.*]], label [[COND_FALSE3024:%.*]]
// SIMD-ONLY0:       cond.true3023:
// SIMD-ONLY0-NEXT:    [[TMP1416:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3025:%.*]]
// SIMD-ONLY0:       cond.false3024:
// SIMD-ONLY0-NEXT:    [[TMP1417:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3025]]
// SIMD-ONLY0:       cond.end3025:
// SIMD-ONLY0-NEXT:    [[COND3026:%.*]] = phi i32 [ [[TMP1416]], [[COND_TRUE3023]] ], [ [[TMP1417]], [[COND_FALSE3024]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3026]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1418:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1419:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3027:%.*]] = icmp eq i32 [[TMP1418]], [[TMP1419]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3027]], label [[COND_TRUE3029:%.*]], label [[COND_FALSE3030:%.*]]
// SIMD-ONLY0:       cond.true3029:
// SIMD-ONLY0-NEXT:    [[TMP1420:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3031:%.*]]
// SIMD-ONLY0:       cond.false3030:
// SIMD-ONLY0-NEXT:    [[TMP1421:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3031]]
// SIMD-ONLY0:       cond.end3031:
// SIMD-ONLY0-NEXT:    [[COND3032:%.*]] = phi i32 [ [[TMP1420]], [[COND_TRUE3029]] ], [ [[TMP1421]], [[COND_FALSE3030]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3032]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1422:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1423:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3033:%.*]] = icmp eq i32 [[TMP1422]], [[TMP1423]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3033]], label [[IF_THEN3035:%.*]], label [[IF_END3036:%.*]]
// SIMD-ONLY0:       if.then3035:
// SIMD-ONLY0-NEXT:    [[TMP1424:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1424]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3036]]
// SIMD-ONLY0:       if.end3036:
// SIMD-ONLY0-NEXT:    [[TMP1425:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1426:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3037:%.*]] = icmp eq i32 [[TMP1425]], [[TMP1426]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3037]], label [[IF_THEN3039:%.*]], label [[IF_END3040:%.*]]
// SIMD-ONLY0:       if.then3039:
// SIMD-ONLY0-NEXT:    [[TMP1427:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1427]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3040]]
// SIMD-ONLY0:       if.end3040:
// SIMD-ONLY0-NEXT:    [[TMP1428:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1429:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3041:%.*]] = icmp sgt i32 [[TMP1428]], [[TMP1429]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3041]], label [[COND_TRUE3043:%.*]], label [[COND_FALSE3044:%.*]]
// SIMD-ONLY0:       cond.true3043:
// SIMD-ONLY0-NEXT:    [[TMP1430:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3045:%.*]]
// SIMD-ONLY0:       cond.false3044:
// SIMD-ONLY0-NEXT:    [[TMP1431:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3045]]
// SIMD-ONLY0:       cond.end3045:
// SIMD-ONLY0-NEXT:    [[COND3046:%.*]] = phi i32 [ [[TMP1430]], [[COND_TRUE3043]] ], [ [[TMP1431]], [[COND_FALSE3044]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3046]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1432:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1433:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3047:%.*]] = icmp slt i32 [[TMP1432]], [[TMP1433]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3047]], label [[COND_TRUE3049:%.*]], label [[COND_FALSE3050:%.*]]
// SIMD-ONLY0:       cond.true3049:
// SIMD-ONLY0-NEXT:    [[TMP1434:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3051:%.*]]
// SIMD-ONLY0:       cond.false3050:
// SIMD-ONLY0-NEXT:    [[TMP1435:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3051]]
// SIMD-ONLY0:       cond.end3051:
// SIMD-ONLY0-NEXT:    [[COND3052:%.*]] = phi i32 [ [[TMP1434]], [[COND_TRUE3049]] ], [ [[TMP1435]], [[COND_FALSE3050]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3052]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1436:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1437:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3053:%.*]] = icmp sgt i32 [[TMP1436]], [[TMP1437]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3053]], label [[COND_TRUE3055:%.*]], label [[COND_FALSE3056:%.*]]
// SIMD-ONLY0:       cond.true3055:
// SIMD-ONLY0-NEXT:    [[TMP1438:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3057:%.*]]
// SIMD-ONLY0:       cond.false3056:
// SIMD-ONLY0-NEXT:    [[TMP1439:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3057]]
// SIMD-ONLY0:       cond.end3057:
// SIMD-ONLY0-NEXT:    [[COND3058:%.*]] = phi i32 [ [[TMP1438]], [[COND_TRUE3055]] ], [ [[TMP1439]], [[COND_FALSE3056]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3058]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1440:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1441:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3059:%.*]] = icmp slt i32 [[TMP1440]], [[TMP1441]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3059]], label [[COND_TRUE3061:%.*]], label [[COND_FALSE3062:%.*]]
// SIMD-ONLY0:       cond.true3061:
// SIMD-ONLY0-NEXT:    [[TMP1442:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3063:%.*]]
// SIMD-ONLY0:       cond.false3062:
// SIMD-ONLY0-NEXT:    [[TMP1443:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3063]]
// SIMD-ONLY0:       cond.end3063:
// SIMD-ONLY0-NEXT:    [[COND3064:%.*]] = phi i32 [ [[TMP1442]], [[COND_TRUE3061]] ], [ [[TMP1443]], [[COND_FALSE3062]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3064]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1444:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1445:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3065:%.*]] = icmp sgt i32 [[TMP1444]], [[TMP1445]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3065]], label [[IF_THEN3067:%.*]], label [[IF_END3068:%.*]]
// SIMD-ONLY0:       if.then3067:
// SIMD-ONLY0-NEXT:    [[TMP1446:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1446]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3068]]
// SIMD-ONLY0:       if.end3068:
// SIMD-ONLY0-NEXT:    [[TMP1447:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1448:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3069:%.*]] = icmp slt i32 [[TMP1447]], [[TMP1448]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3069]], label [[IF_THEN3071:%.*]], label [[IF_END3072:%.*]]
// SIMD-ONLY0:       if.then3071:
// SIMD-ONLY0-NEXT:    [[TMP1449:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1449]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3072]]
// SIMD-ONLY0:       if.end3072:
// SIMD-ONLY0-NEXT:    [[TMP1450:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1451:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3073:%.*]] = icmp sgt i32 [[TMP1450]], [[TMP1451]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3073]], label [[IF_THEN3075:%.*]], label [[IF_END3076:%.*]]
// SIMD-ONLY0:       if.then3075:
// SIMD-ONLY0-NEXT:    [[TMP1452:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1452]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3076]]
// SIMD-ONLY0:       if.end3076:
// SIMD-ONLY0-NEXT:    [[TMP1453:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1454:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3077:%.*]] = icmp slt i32 [[TMP1453]], [[TMP1454]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3077]], label [[IF_THEN3079:%.*]], label [[IF_END3080:%.*]]
// SIMD-ONLY0:       if.then3079:
// SIMD-ONLY0-NEXT:    [[TMP1455:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1455]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3080]]
// SIMD-ONLY0:       if.end3080:
// SIMD-ONLY0-NEXT:    [[TMP1456:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1457:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3081:%.*]] = icmp eq i32 [[TMP1456]], [[TMP1457]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3081]], label [[COND_TRUE3083:%.*]], label [[COND_FALSE3084:%.*]]
// SIMD-ONLY0:       cond.true3083:
// SIMD-ONLY0-NEXT:    [[TMP1458:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3085:%.*]]
// SIMD-ONLY0:       cond.false3084:
// SIMD-ONLY0-NEXT:    [[TMP1459:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3085]]
// SIMD-ONLY0:       cond.end3085:
// SIMD-ONLY0-NEXT:    [[COND3086:%.*]] = phi i32 [ [[TMP1458]], [[COND_TRUE3083]] ], [ [[TMP1459]], [[COND_FALSE3084]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3086]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1460:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1461:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3087:%.*]] = icmp eq i32 [[TMP1460]], [[TMP1461]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3087]], label [[COND_TRUE3089:%.*]], label [[COND_FALSE3090:%.*]]
// SIMD-ONLY0:       cond.true3089:
// SIMD-ONLY0-NEXT:    [[TMP1462:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3091:%.*]]
// SIMD-ONLY0:       cond.false3090:
// SIMD-ONLY0-NEXT:    [[TMP1463:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3091]]
// SIMD-ONLY0:       cond.end3091:
// SIMD-ONLY0-NEXT:    [[COND3092:%.*]] = phi i32 [ [[TMP1462]], [[COND_TRUE3089]] ], [ [[TMP1463]], [[COND_FALSE3090]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3092]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1464:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1465:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3093:%.*]] = icmp eq i32 [[TMP1464]], [[TMP1465]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3093]], label [[IF_THEN3095:%.*]], label [[IF_END3096:%.*]]
// SIMD-ONLY0:       if.then3095:
// SIMD-ONLY0-NEXT:    [[TMP1466:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1466]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3096]]
// SIMD-ONLY0:       if.end3096:
// SIMD-ONLY0-NEXT:    [[TMP1467:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1468:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3097:%.*]] = icmp eq i32 [[TMP1467]], [[TMP1468]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3097]], label [[IF_THEN3099:%.*]], label [[IF_END3100:%.*]]
// SIMD-ONLY0:       if.then3099:
// SIMD-ONLY0-NEXT:    [[TMP1469:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1469]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3100]]
// SIMD-ONLY0:       if.end3100:
// SIMD-ONLY0-NEXT:    [[TMP1470:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1471:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3101:%.*]] = icmp ugt i32 [[TMP1470]], [[TMP1471]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3101]], label [[COND_TRUE3103:%.*]], label [[COND_FALSE3104:%.*]]
// SIMD-ONLY0:       cond.true3103:
// SIMD-ONLY0-NEXT:    [[TMP1472:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3105:%.*]]
// SIMD-ONLY0:       cond.false3104:
// SIMD-ONLY0-NEXT:    [[TMP1473:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3105]]
// SIMD-ONLY0:       cond.end3105:
// SIMD-ONLY0-NEXT:    [[COND3106:%.*]] = phi i32 [ [[TMP1472]], [[COND_TRUE3103]] ], [ [[TMP1473]], [[COND_FALSE3104]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3106]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1474:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1475:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3107:%.*]] = icmp ult i32 [[TMP1474]], [[TMP1475]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3107]], label [[COND_TRUE3109:%.*]], label [[COND_FALSE3110:%.*]]
// SIMD-ONLY0:       cond.true3109:
// SIMD-ONLY0-NEXT:    [[TMP1476:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3111:%.*]]
// SIMD-ONLY0:       cond.false3110:
// SIMD-ONLY0-NEXT:    [[TMP1477:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3111]]
// SIMD-ONLY0:       cond.end3111:
// SIMD-ONLY0-NEXT:    [[COND3112:%.*]] = phi i32 [ [[TMP1476]], [[COND_TRUE3109]] ], [ [[TMP1477]], [[COND_FALSE3110]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3112]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1478:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1479:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3113:%.*]] = icmp ugt i32 [[TMP1478]], [[TMP1479]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3113]], label [[COND_TRUE3115:%.*]], label [[COND_FALSE3116:%.*]]
// SIMD-ONLY0:       cond.true3115:
// SIMD-ONLY0-NEXT:    [[TMP1480:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3117:%.*]]
// SIMD-ONLY0:       cond.false3116:
// SIMD-ONLY0-NEXT:    [[TMP1481:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3117]]
// SIMD-ONLY0:       cond.end3117:
// SIMD-ONLY0-NEXT:    [[COND3118:%.*]] = phi i32 [ [[TMP1480]], [[COND_TRUE3115]] ], [ [[TMP1481]], [[COND_FALSE3116]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3118]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1482:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1483:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3119:%.*]] = icmp ult i32 [[TMP1482]], [[TMP1483]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3119]], label [[COND_TRUE3121:%.*]], label [[COND_FALSE3122:%.*]]
// SIMD-ONLY0:       cond.true3121:
// SIMD-ONLY0-NEXT:    [[TMP1484:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3123:%.*]]
// SIMD-ONLY0:       cond.false3122:
// SIMD-ONLY0-NEXT:    [[TMP1485:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3123]]
// SIMD-ONLY0:       cond.end3123:
// SIMD-ONLY0-NEXT:    [[COND3124:%.*]] = phi i32 [ [[TMP1484]], [[COND_TRUE3121]] ], [ [[TMP1485]], [[COND_FALSE3122]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3124]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1486:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1487:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3125:%.*]] = icmp ugt i32 [[TMP1486]], [[TMP1487]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3125]], label [[IF_THEN3127:%.*]], label [[IF_END3128:%.*]]
// SIMD-ONLY0:       if.then3127:
// SIMD-ONLY0-NEXT:    [[TMP1488:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1488]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3128]]
// SIMD-ONLY0:       if.end3128:
// SIMD-ONLY0-NEXT:    [[TMP1489:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1490:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3129:%.*]] = icmp ult i32 [[TMP1489]], [[TMP1490]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3129]], label [[IF_THEN3131:%.*]], label [[IF_END3132:%.*]]
// SIMD-ONLY0:       if.then3131:
// SIMD-ONLY0-NEXT:    [[TMP1491:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1491]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3132]]
// SIMD-ONLY0:       if.end3132:
// SIMD-ONLY0-NEXT:    [[TMP1492:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1493:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3133:%.*]] = icmp ugt i32 [[TMP1492]], [[TMP1493]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3133]], label [[IF_THEN3135:%.*]], label [[IF_END3136:%.*]]
// SIMD-ONLY0:       if.then3135:
// SIMD-ONLY0-NEXT:    [[TMP1494:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1494]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3136]]
// SIMD-ONLY0:       if.end3136:
// SIMD-ONLY0-NEXT:    [[TMP1495:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1496:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3137:%.*]] = icmp ult i32 [[TMP1495]], [[TMP1496]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3137]], label [[IF_THEN3139:%.*]], label [[IF_END3140:%.*]]
// SIMD-ONLY0:       if.then3139:
// SIMD-ONLY0-NEXT:    [[TMP1497:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1497]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3140]]
// SIMD-ONLY0:       if.end3140:
// SIMD-ONLY0-NEXT:    [[TMP1498:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1499:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3141:%.*]] = icmp eq i32 [[TMP1498]], [[TMP1499]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3141]], label [[COND_TRUE3143:%.*]], label [[COND_FALSE3144:%.*]]
// SIMD-ONLY0:       cond.true3143:
// SIMD-ONLY0-NEXT:    [[TMP1500:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3145:%.*]]
// SIMD-ONLY0:       cond.false3144:
// SIMD-ONLY0-NEXT:    [[TMP1501:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3145]]
// SIMD-ONLY0:       cond.end3145:
// SIMD-ONLY0-NEXT:    [[COND3146:%.*]] = phi i32 [ [[TMP1500]], [[COND_TRUE3143]] ], [ [[TMP1501]], [[COND_FALSE3144]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3146]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1502:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1503:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3147:%.*]] = icmp eq i32 [[TMP1502]], [[TMP1503]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3147]], label [[COND_TRUE3149:%.*]], label [[COND_FALSE3150:%.*]]
// SIMD-ONLY0:       cond.true3149:
// SIMD-ONLY0-NEXT:    [[TMP1504:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3151:%.*]]
// SIMD-ONLY0:       cond.false3150:
// SIMD-ONLY0-NEXT:    [[TMP1505:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END3151]]
// SIMD-ONLY0:       cond.end3151:
// SIMD-ONLY0-NEXT:    [[COND3152:%.*]] = phi i32 [ [[TMP1504]], [[COND_TRUE3149]] ], [ [[TMP1505]], [[COND_FALSE3150]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND3152]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1506:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1507:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3153:%.*]] = icmp eq i32 [[TMP1506]], [[TMP1507]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3153]], label [[IF_THEN3155:%.*]], label [[IF_END3156:%.*]]
// SIMD-ONLY0:       if.then3155:
// SIMD-ONLY0-NEXT:    [[TMP1508:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1508]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3156]]
// SIMD-ONLY0:       if.end3156:
// SIMD-ONLY0-NEXT:    [[TMP1509:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1510:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3157:%.*]] = icmp eq i32 [[TMP1509]], [[TMP1510]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3157]], label [[IF_THEN3159:%.*]], label [[IF_END3160:%.*]]
// SIMD-ONLY0:       if.then3159:
// SIMD-ONLY0-NEXT:    [[TMP1511:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1511]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3160]]
// SIMD-ONLY0:       if.end3160:
// SIMD-ONLY0-NEXT:    [[TMP1512:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1513:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3161:%.*]] = icmp sgt i64 [[TMP1512]], [[TMP1513]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3161]], label [[COND_TRUE3163:%.*]], label [[COND_FALSE3164:%.*]]
// SIMD-ONLY0:       cond.true3163:
// SIMD-ONLY0-NEXT:    [[TMP1514:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3165:%.*]]
// SIMD-ONLY0:       cond.false3164:
// SIMD-ONLY0-NEXT:    [[TMP1515:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3165]]
// SIMD-ONLY0:       cond.end3165:
// SIMD-ONLY0-NEXT:    [[COND3166:%.*]] = phi i64 [ [[TMP1514]], [[COND_TRUE3163]] ], [ [[TMP1515]], [[COND_FALSE3164]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3166]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1516:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1517:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3167:%.*]] = icmp slt i64 [[TMP1516]], [[TMP1517]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3167]], label [[COND_TRUE3169:%.*]], label [[COND_FALSE3170:%.*]]
// SIMD-ONLY0:       cond.true3169:
// SIMD-ONLY0-NEXT:    [[TMP1518:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3171:%.*]]
// SIMD-ONLY0:       cond.false3170:
// SIMD-ONLY0-NEXT:    [[TMP1519:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3171]]
// SIMD-ONLY0:       cond.end3171:
// SIMD-ONLY0-NEXT:    [[COND3172:%.*]] = phi i64 [ [[TMP1518]], [[COND_TRUE3169]] ], [ [[TMP1519]], [[COND_FALSE3170]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3172]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1520:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1521:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3173:%.*]] = icmp sgt i64 [[TMP1520]], [[TMP1521]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3173]], label [[COND_TRUE3175:%.*]], label [[COND_FALSE3176:%.*]]
// SIMD-ONLY0:       cond.true3175:
// SIMD-ONLY0-NEXT:    [[TMP1522:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3177:%.*]]
// SIMD-ONLY0:       cond.false3176:
// SIMD-ONLY0-NEXT:    [[TMP1523:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3177]]
// SIMD-ONLY0:       cond.end3177:
// SIMD-ONLY0-NEXT:    [[COND3178:%.*]] = phi i64 [ [[TMP1522]], [[COND_TRUE3175]] ], [ [[TMP1523]], [[COND_FALSE3176]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3178]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1524:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1525:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3179:%.*]] = icmp slt i64 [[TMP1524]], [[TMP1525]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3179]], label [[COND_TRUE3181:%.*]], label [[COND_FALSE3182:%.*]]
// SIMD-ONLY0:       cond.true3181:
// SIMD-ONLY0-NEXT:    [[TMP1526:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3183:%.*]]
// SIMD-ONLY0:       cond.false3182:
// SIMD-ONLY0-NEXT:    [[TMP1527:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3183]]
// SIMD-ONLY0:       cond.end3183:
// SIMD-ONLY0-NEXT:    [[COND3184:%.*]] = phi i64 [ [[TMP1526]], [[COND_TRUE3181]] ], [ [[TMP1527]], [[COND_FALSE3182]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3184]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1528:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1529:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3185:%.*]] = icmp sgt i64 [[TMP1528]], [[TMP1529]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3185]], label [[IF_THEN3187:%.*]], label [[IF_END3188:%.*]]
// SIMD-ONLY0:       if.then3187:
// SIMD-ONLY0-NEXT:    [[TMP1530:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1530]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3188]]
// SIMD-ONLY0:       if.end3188:
// SIMD-ONLY0-NEXT:    [[TMP1531:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1532:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3189:%.*]] = icmp slt i64 [[TMP1531]], [[TMP1532]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3189]], label [[IF_THEN3191:%.*]], label [[IF_END3192:%.*]]
// SIMD-ONLY0:       if.then3191:
// SIMD-ONLY0-NEXT:    [[TMP1533:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1533]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3192]]
// SIMD-ONLY0:       if.end3192:
// SIMD-ONLY0-NEXT:    [[TMP1534:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1535:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3193:%.*]] = icmp sgt i64 [[TMP1534]], [[TMP1535]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3193]], label [[IF_THEN3195:%.*]], label [[IF_END3196:%.*]]
// SIMD-ONLY0:       if.then3195:
// SIMD-ONLY0-NEXT:    [[TMP1536:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1536]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3196]]
// SIMD-ONLY0:       if.end3196:
// SIMD-ONLY0-NEXT:    [[TMP1537:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1538:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3197:%.*]] = icmp slt i64 [[TMP1537]], [[TMP1538]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3197]], label [[IF_THEN3199:%.*]], label [[IF_END3200:%.*]]
// SIMD-ONLY0:       if.then3199:
// SIMD-ONLY0-NEXT:    [[TMP1539:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1539]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3200]]
// SIMD-ONLY0:       if.end3200:
// SIMD-ONLY0-NEXT:    [[TMP1540:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1541:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3201:%.*]] = icmp eq i64 [[TMP1540]], [[TMP1541]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3201]], label [[COND_TRUE3203:%.*]], label [[COND_FALSE3204:%.*]]
// SIMD-ONLY0:       cond.true3203:
// SIMD-ONLY0-NEXT:    [[TMP1542:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3205:%.*]]
// SIMD-ONLY0:       cond.false3204:
// SIMD-ONLY0-NEXT:    [[TMP1543:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3205]]
// SIMD-ONLY0:       cond.end3205:
// SIMD-ONLY0-NEXT:    [[COND3206:%.*]] = phi i64 [ [[TMP1542]], [[COND_TRUE3203]] ], [ [[TMP1543]], [[COND_FALSE3204]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3206]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1544:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1545:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3207:%.*]] = icmp eq i64 [[TMP1544]], [[TMP1545]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3207]], label [[COND_TRUE3209:%.*]], label [[COND_FALSE3210:%.*]]
// SIMD-ONLY0:       cond.true3209:
// SIMD-ONLY0-NEXT:    [[TMP1546:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3211:%.*]]
// SIMD-ONLY0:       cond.false3210:
// SIMD-ONLY0-NEXT:    [[TMP1547:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3211]]
// SIMD-ONLY0:       cond.end3211:
// SIMD-ONLY0-NEXT:    [[COND3212:%.*]] = phi i64 [ [[TMP1546]], [[COND_TRUE3209]] ], [ [[TMP1547]], [[COND_FALSE3210]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3212]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1548:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1549:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3213:%.*]] = icmp eq i64 [[TMP1548]], [[TMP1549]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3213]], label [[IF_THEN3215:%.*]], label [[IF_END3216:%.*]]
// SIMD-ONLY0:       if.then3215:
// SIMD-ONLY0-NEXT:    [[TMP1550:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1550]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3216]]
// SIMD-ONLY0:       if.end3216:
// SIMD-ONLY0-NEXT:    [[TMP1551:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1552:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3217:%.*]] = icmp eq i64 [[TMP1551]], [[TMP1552]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3217]], label [[IF_THEN3219:%.*]], label [[IF_END3220:%.*]]
// SIMD-ONLY0:       if.then3219:
// SIMD-ONLY0-NEXT:    [[TMP1553:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1553]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3220]]
// SIMD-ONLY0:       if.end3220:
// SIMD-ONLY0-NEXT:    [[TMP1554:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1555:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3221:%.*]] = icmp ugt i64 [[TMP1554]], [[TMP1555]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3221]], label [[COND_TRUE3223:%.*]], label [[COND_FALSE3224:%.*]]
// SIMD-ONLY0:       cond.true3223:
// SIMD-ONLY0-NEXT:    [[TMP1556:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3225:%.*]]
// SIMD-ONLY0:       cond.false3224:
// SIMD-ONLY0-NEXT:    [[TMP1557:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3225]]
// SIMD-ONLY0:       cond.end3225:
// SIMD-ONLY0-NEXT:    [[COND3226:%.*]] = phi i64 [ [[TMP1556]], [[COND_TRUE3223]] ], [ [[TMP1557]], [[COND_FALSE3224]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3226]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1558:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1559:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3227:%.*]] = icmp ult i64 [[TMP1558]], [[TMP1559]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3227]], label [[COND_TRUE3229:%.*]], label [[COND_FALSE3230:%.*]]
// SIMD-ONLY0:       cond.true3229:
// SIMD-ONLY0-NEXT:    [[TMP1560:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3231:%.*]]
// SIMD-ONLY0:       cond.false3230:
// SIMD-ONLY0-NEXT:    [[TMP1561:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3231]]
// SIMD-ONLY0:       cond.end3231:
// SIMD-ONLY0-NEXT:    [[COND3232:%.*]] = phi i64 [ [[TMP1560]], [[COND_TRUE3229]] ], [ [[TMP1561]], [[COND_FALSE3230]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3232]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1562:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1563:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3233:%.*]] = icmp ugt i64 [[TMP1562]], [[TMP1563]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3233]], label [[COND_TRUE3235:%.*]], label [[COND_FALSE3236:%.*]]
// SIMD-ONLY0:       cond.true3235:
// SIMD-ONLY0-NEXT:    [[TMP1564:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3237:%.*]]
// SIMD-ONLY0:       cond.false3236:
// SIMD-ONLY0-NEXT:    [[TMP1565:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3237]]
// SIMD-ONLY0:       cond.end3237:
// SIMD-ONLY0-NEXT:    [[COND3238:%.*]] = phi i64 [ [[TMP1564]], [[COND_TRUE3235]] ], [ [[TMP1565]], [[COND_FALSE3236]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3238]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1566:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1567:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3239:%.*]] = icmp ult i64 [[TMP1566]], [[TMP1567]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3239]], label [[COND_TRUE3241:%.*]], label [[COND_FALSE3242:%.*]]
// SIMD-ONLY0:       cond.true3241:
// SIMD-ONLY0-NEXT:    [[TMP1568:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3243:%.*]]
// SIMD-ONLY0:       cond.false3242:
// SIMD-ONLY0-NEXT:    [[TMP1569:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3243]]
// SIMD-ONLY0:       cond.end3243:
// SIMD-ONLY0-NEXT:    [[COND3244:%.*]] = phi i64 [ [[TMP1568]], [[COND_TRUE3241]] ], [ [[TMP1569]], [[COND_FALSE3242]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3244]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1570:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1571:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3245:%.*]] = icmp ugt i64 [[TMP1570]], [[TMP1571]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3245]], label [[IF_THEN3247:%.*]], label [[IF_END3248:%.*]]
// SIMD-ONLY0:       if.then3247:
// SIMD-ONLY0-NEXT:    [[TMP1572:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1572]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3248]]
// SIMD-ONLY0:       if.end3248:
// SIMD-ONLY0-NEXT:    [[TMP1573:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1574:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3249:%.*]] = icmp ult i64 [[TMP1573]], [[TMP1574]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3249]], label [[IF_THEN3251:%.*]], label [[IF_END3252:%.*]]
// SIMD-ONLY0:       if.then3251:
// SIMD-ONLY0-NEXT:    [[TMP1575:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1575]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3252]]
// SIMD-ONLY0:       if.end3252:
// SIMD-ONLY0-NEXT:    [[TMP1576:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1577:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3253:%.*]] = icmp ugt i64 [[TMP1576]], [[TMP1577]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3253]], label [[IF_THEN3255:%.*]], label [[IF_END3256:%.*]]
// SIMD-ONLY0:       if.then3255:
// SIMD-ONLY0-NEXT:    [[TMP1578:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1578]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3256]]
// SIMD-ONLY0:       if.end3256:
// SIMD-ONLY0-NEXT:    [[TMP1579:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1580:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3257:%.*]] = icmp ult i64 [[TMP1579]], [[TMP1580]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3257]], label [[IF_THEN3259:%.*]], label [[IF_END3260:%.*]]
// SIMD-ONLY0:       if.then3259:
// SIMD-ONLY0-NEXT:    [[TMP1581:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1581]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3260]]
// SIMD-ONLY0:       if.end3260:
// SIMD-ONLY0-NEXT:    [[TMP1582:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1583:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3261:%.*]] = icmp eq i64 [[TMP1582]], [[TMP1583]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3261]], label [[COND_TRUE3263:%.*]], label [[COND_FALSE3264:%.*]]
// SIMD-ONLY0:       cond.true3263:
// SIMD-ONLY0-NEXT:    [[TMP1584:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3265:%.*]]
// SIMD-ONLY0:       cond.false3264:
// SIMD-ONLY0-NEXT:    [[TMP1585:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3265]]
// SIMD-ONLY0:       cond.end3265:
// SIMD-ONLY0-NEXT:    [[COND3266:%.*]] = phi i64 [ [[TMP1584]], [[COND_TRUE3263]] ], [ [[TMP1585]], [[COND_FALSE3264]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3266]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1586:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1587:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3267:%.*]] = icmp eq i64 [[TMP1586]], [[TMP1587]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3267]], label [[COND_TRUE3269:%.*]], label [[COND_FALSE3270:%.*]]
// SIMD-ONLY0:       cond.true3269:
// SIMD-ONLY0-NEXT:    [[TMP1588:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3271:%.*]]
// SIMD-ONLY0:       cond.false3270:
// SIMD-ONLY0-NEXT:    [[TMP1589:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3271]]
// SIMD-ONLY0:       cond.end3271:
// SIMD-ONLY0-NEXT:    [[COND3272:%.*]] = phi i64 [ [[TMP1588]], [[COND_TRUE3269]] ], [ [[TMP1589]], [[COND_FALSE3270]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3272]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1590:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1591:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3273:%.*]] = icmp eq i64 [[TMP1590]], [[TMP1591]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3273]], label [[IF_THEN3275:%.*]], label [[IF_END3276:%.*]]
// SIMD-ONLY0:       if.then3275:
// SIMD-ONLY0-NEXT:    [[TMP1592:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1592]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3276]]
// SIMD-ONLY0:       if.end3276:
// SIMD-ONLY0-NEXT:    [[TMP1593:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1594:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3277:%.*]] = icmp eq i64 [[TMP1593]], [[TMP1594]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3277]], label [[IF_THEN3279:%.*]], label [[IF_END3280:%.*]]
// SIMD-ONLY0:       if.then3279:
// SIMD-ONLY0-NEXT:    [[TMP1595:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1595]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3280]]
// SIMD-ONLY0:       if.end3280:
// SIMD-ONLY0-NEXT:    [[TMP1596:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1597:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3281:%.*]] = icmp sgt i64 [[TMP1596]], [[TMP1597]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3281]], label [[COND_TRUE3283:%.*]], label [[COND_FALSE3284:%.*]]
// SIMD-ONLY0:       cond.true3283:
// SIMD-ONLY0-NEXT:    [[TMP1598:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3285:%.*]]
// SIMD-ONLY0:       cond.false3284:
// SIMD-ONLY0-NEXT:    [[TMP1599:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3285]]
// SIMD-ONLY0:       cond.end3285:
// SIMD-ONLY0-NEXT:    [[COND3286:%.*]] = phi i64 [ [[TMP1598]], [[COND_TRUE3283]] ], [ [[TMP1599]], [[COND_FALSE3284]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3286]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1600:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1601:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3287:%.*]] = icmp slt i64 [[TMP1600]], [[TMP1601]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3287]], label [[COND_TRUE3289:%.*]], label [[COND_FALSE3290:%.*]]
// SIMD-ONLY0:       cond.true3289:
// SIMD-ONLY0-NEXT:    [[TMP1602:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3291:%.*]]
// SIMD-ONLY0:       cond.false3290:
// SIMD-ONLY0-NEXT:    [[TMP1603:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3291]]
// SIMD-ONLY0:       cond.end3291:
// SIMD-ONLY0-NEXT:    [[COND3292:%.*]] = phi i64 [ [[TMP1602]], [[COND_TRUE3289]] ], [ [[TMP1603]], [[COND_FALSE3290]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3292]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1604:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1605:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3293:%.*]] = icmp sgt i64 [[TMP1604]], [[TMP1605]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3293]], label [[COND_TRUE3295:%.*]], label [[COND_FALSE3296:%.*]]
// SIMD-ONLY0:       cond.true3295:
// SIMD-ONLY0-NEXT:    [[TMP1606:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3297:%.*]]
// SIMD-ONLY0:       cond.false3296:
// SIMD-ONLY0-NEXT:    [[TMP1607:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3297]]
// SIMD-ONLY0:       cond.end3297:
// SIMD-ONLY0-NEXT:    [[COND3298:%.*]] = phi i64 [ [[TMP1606]], [[COND_TRUE3295]] ], [ [[TMP1607]], [[COND_FALSE3296]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3298]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1608:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1609:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3299:%.*]] = icmp slt i64 [[TMP1608]], [[TMP1609]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3299]], label [[COND_TRUE3301:%.*]], label [[COND_FALSE3302:%.*]]
// SIMD-ONLY0:       cond.true3301:
// SIMD-ONLY0-NEXT:    [[TMP1610:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3303:%.*]]
// SIMD-ONLY0:       cond.false3302:
// SIMD-ONLY0-NEXT:    [[TMP1611:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3303]]
// SIMD-ONLY0:       cond.end3303:
// SIMD-ONLY0-NEXT:    [[COND3304:%.*]] = phi i64 [ [[TMP1610]], [[COND_TRUE3301]] ], [ [[TMP1611]], [[COND_FALSE3302]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3304]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1612:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1613:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3305:%.*]] = icmp sgt i64 [[TMP1612]], [[TMP1613]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3305]], label [[IF_THEN3307:%.*]], label [[IF_END3308:%.*]]
// SIMD-ONLY0:       if.then3307:
// SIMD-ONLY0-NEXT:    [[TMP1614:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1614]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3308]]
// SIMD-ONLY0:       if.end3308:
// SIMD-ONLY0-NEXT:    [[TMP1615:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1616:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3309:%.*]] = icmp slt i64 [[TMP1615]], [[TMP1616]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3309]], label [[IF_THEN3311:%.*]], label [[IF_END3312:%.*]]
// SIMD-ONLY0:       if.then3311:
// SIMD-ONLY0-NEXT:    [[TMP1617:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1617]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3312]]
// SIMD-ONLY0:       if.end3312:
// SIMD-ONLY0-NEXT:    [[TMP1618:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1619:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3313:%.*]] = icmp sgt i64 [[TMP1618]], [[TMP1619]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3313]], label [[IF_THEN3315:%.*]], label [[IF_END3316:%.*]]
// SIMD-ONLY0:       if.then3315:
// SIMD-ONLY0-NEXT:    [[TMP1620:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1620]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3316]]
// SIMD-ONLY0:       if.end3316:
// SIMD-ONLY0-NEXT:    [[TMP1621:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1622:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3317:%.*]] = icmp slt i64 [[TMP1621]], [[TMP1622]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3317]], label [[IF_THEN3319:%.*]], label [[IF_END3320:%.*]]
// SIMD-ONLY0:       if.then3319:
// SIMD-ONLY0-NEXT:    [[TMP1623:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1623]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3320]]
// SIMD-ONLY0:       if.end3320:
// SIMD-ONLY0-NEXT:    [[TMP1624:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1625:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3321:%.*]] = icmp eq i64 [[TMP1624]], [[TMP1625]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3321]], label [[COND_TRUE3323:%.*]], label [[COND_FALSE3324:%.*]]
// SIMD-ONLY0:       cond.true3323:
// SIMD-ONLY0-NEXT:    [[TMP1626:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3325:%.*]]
// SIMD-ONLY0:       cond.false3324:
// SIMD-ONLY0-NEXT:    [[TMP1627:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3325]]
// SIMD-ONLY0:       cond.end3325:
// SIMD-ONLY0-NEXT:    [[COND3326:%.*]] = phi i64 [ [[TMP1626]], [[COND_TRUE3323]] ], [ [[TMP1627]], [[COND_FALSE3324]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3326]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1628:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1629:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3327:%.*]] = icmp eq i64 [[TMP1628]], [[TMP1629]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3327]], label [[COND_TRUE3329:%.*]], label [[COND_FALSE3330:%.*]]
// SIMD-ONLY0:       cond.true3329:
// SIMD-ONLY0-NEXT:    [[TMP1630:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3331:%.*]]
// SIMD-ONLY0:       cond.false3330:
// SIMD-ONLY0-NEXT:    [[TMP1631:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3331]]
// SIMD-ONLY0:       cond.end3331:
// SIMD-ONLY0-NEXT:    [[COND3332:%.*]] = phi i64 [ [[TMP1630]], [[COND_TRUE3329]] ], [ [[TMP1631]], [[COND_FALSE3330]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3332]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1632:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1633:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3333:%.*]] = icmp eq i64 [[TMP1632]], [[TMP1633]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3333]], label [[IF_THEN3335:%.*]], label [[IF_END3336:%.*]]
// SIMD-ONLY0:       if.then3335:
// SIMD-ONLY0-NEXT:    [[TMP1634:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1634]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3336]]
// SIMD-ONLY0:       if.end3336:
// SIMD-ONLY0-NEXT:    [[TMP1635:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1636:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3337:%.*]] = icmp eq i64 [[TMP1635]], [[TMP1636]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3337]], label [[IF_THEN3339:%.*]], label [[IF_END3340:%.*]]
// SIMD-ONLY0:       if.then3339:
// SIMD-ONLY0-NEXT:    [[TMP1637:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1637]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3340]]
// SIMD-ONLY0:       if.end3340:
// SIMD-ONLY0-NEXT:    [[TMP1638:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1639:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3341:%.*]] = icmp ugt i64 [[TMP1638]], [[TMP1639]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3341]], label [[COND_TRUE3343:%.*]], label [[COND_FALSE3344:%.*]]
// SIMD-ONLY0:       cond.true3343:
// SIMD-ONLY0-NEXT:    [[TMP1640:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3345:%.*]]
// SIMD-ONLY0:       cond.false3344:
// SIMD-ONLY0-NEXT:    [[TMP1641:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3345]]
// SIMD-ONLY0:       cond.end3345:
// SIMD-ONLY0-NEXT:    [[COND3346:%.*]] = phi i64 [ [[TMP1640]], [[COND_TRUE3343]] ], [ [[TMP1641]], [[COND_FALSE3344]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3346]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1642:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1643:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3347:%.*]] = icmp ult i64 [[TMP1642]], [[TMP1643]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3347]], label [[COND_TRUE3349:%.*]], label [[COND_FALSE3350:%.*]]
// SIMD-ONLY0:       cond.true3349:
// SIMD-ONLY0-NEXT:    [[TMP1644:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3351:%.*]]
// SIMD-ONLY0:       cond.false3350:
// SIMD-ONLY0-NEXT:    [[TMP1645:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3351]]
// SIMD-ONLY0:       cond.end3351:
// SIMD-ONLY0-NEXT:    [[COND3352:%.*]] = phi i64 [ [[TMP1644]], [[COND_TRUE3349]] ], [ [[TMP1645]], [[COND_FALSE3350]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3352]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1646:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1647:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3353:%.*]] = icmp ugt i64 [[TMP1646]], [[TMP1647]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3353]], label [[COND_TRUE3355:%.*]], label [[COND_FALSE3356:%.*]]
// SIMD-ONLY0:       cond.true3355:
// SIMD-ONLY0-NEXT:    [[TMP1648:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3357:%.*]]
// SIMD-ONLY0:       cond.false3356:
// SIMD-ONLY0-NEXT:    [[TMP1649:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3357]]
// SIMD-ONLY0:       cond.end3357:
// SIMD-ONLY0-NEXT:    [[COND3358:%.*]] = phi i64 [ [[TMP1648]], [[COND_TRUE3355]] ], [ [[TMP1649]], [[COND_FALSE3356]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3358]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1650:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1651:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3359:%.*]] = icmp ult i64 [[TMP1650]], [[TMP1651]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3359]], label [[COND_TRUE3361:%.*]], label [[COND_FALSE3362:%.*]]
// SIMD-ONLY0:       cond.true3361:
// SIMD-ONLY0-NEXT:    [[TMP1652:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3363:%.*]]
// SIMD-ONLY0:       cond.false3362:
// SIMD-ONLY0-NEXT:    [[TMP1653:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3363]]
// SIMD-ONLY0:       cond.end3363:
// SIMD-ONLY0-NEXT:    [[COND3364:%.*]] = phi i64 [ [[TMP1652]], [[COND_TRUE3361]] ], [ [[TMP1653]], [[COND_FALSE3362]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3364]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1654:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1655:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3365:%.*]] = icmp ugt i64 [[TMP1654]], [[TMP1655]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3365]], label [[IF_THEN3367:%.*]], label [[IF_END3368:%.*]]
// SIMD-ONLY0:       if.then3367:
// SIMD-ONLY0-NEXT:    [[TMP1656:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1656]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3368]]
// SIMD-ONLY0:       if.end3368:
// SIMD-ONLY0-NEXT:    [[TMP1657:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1658:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3369:%.*]] = icmp ult i64 [[TMP1657]], [[TMP1658]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3369]], label [[IF_THEN3371:%.*]], label [[IF_END3372:%.*]]
// SIMD-ONLY0:       if.then3371:
// SIMD-ONLY0-NEXT:    [[TMP1659:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1659]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3372]]
// SIMD-ONLY0:       if.end3372:
// SIMD-ONLY0-NEXT:    [[TMP1660:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1661:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3373:%.*]] = icmp ugt i64 [[TMP1660]], [[TMP1661]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3373]], label [[IF_THEN3375:%.*]], label [[IF_END3376:%.*]]
// SIMD-ONLY0:       if.then3375:
// SIMD-ONLY0-NEXT:    [[TMP1662:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1662]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3376]]
// SIMD-ONLY0:       if.end3376:
// SIMD-ONLY0-NEXT:    [[TMP1663:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1664:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3377:%.*]] = icmp ult i64 [[TMP1663]], [[TMP1664]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3377]], label [[IF_THEN3379:%.*]], label [[IF_END3380:%.*]]
// SIMD-ONLY0:       if.then3379:
// SIMD-ONLY0-NEXT:    [[TMP1665:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1665]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3380]]
// SIMD-ONLY0:       if.end3380:
// SIMD-ONLY0-NEXT:    [[TMP1666:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1667:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3381:%.*]] = icmp eq i64 [[TMP1666]], [[TMP1667]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3381]], label [[COND_TRUE3383:%.*]], label [[COND_FALSE3384:%.*]]
// SIMD-ONLY0:       cond.true3383:
// SIMD-ONLY0-NEXT:    [[TMP1668:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3385:%.*]]
// SIMD-ONLY0:       cond.false3384:
// SIMD-ONLY0-NEXT:    [[TMP1669:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3385]]
// SIMD-ONLY0:       cond.end3385:
// SIMD-ONLY0-NEXT:    [[COND3386:%.*]] = phi i64 [ [[TMP1668]], [[COND_TRUE3383]] ], [ [[TMP1669]], [[COND_FALSE3384]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3386]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1670:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1671:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3387:%.*]] = icmp eq i64 [[TMP1670]], [[TMP1671]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3387]], label [[COND_TRUE3389:%.*]], label [[COND_FALSE3390:%.*]]
// SIMD-ONLY0:       cond.true3389:
// SIMD-ONLY0-NEXT:    [[TMP1672:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3391:%.*]]
// SIMD-ONLY0:       cond.false3390:
// SIMD-ONLY0-NEXT:    [[TMP1673:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3391]]
// SIMD-ONLY0:       cond.end3391:
// SIMD-ONLY0-NEXT:    [[COND3392:%.*]] = phi i64 [ [[TMP1672]], [[COND_TRUE3389]] ], [ [[TMP1673]], [[COND_FALSE3390]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3392]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1674:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1675:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3393:%.*]] = icmp eq i64 [[TMP1674]], [[TMP1675]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3393]], label [[IF_THEN3395:%.*]], label [[IF_END3396:%.*]]
// SIMD-ONLY0:       if.then3395:
// SIMD-ONLY0-NEXT:    [[TMP1676:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1676]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3396]]
// SIMD-ONLY0:       if.end3396:
// SIMD-ONLY0-NEXT:    [[TMP1677:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1678:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3397:%.*]] = icmp eq i64 [[TMP1677]], [[TMP1678]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3397]], label [[IF_THEN3399:%.*]], label [[IF_END3400:%.*]]
// SIMD-ONLY0:       if.then3399:
// SIMD-ONLY0-NEXT:    [[TMP1679:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1679]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3400]]
// SIMD-ONLY0:       if.end3400:
// SIMD-ONLY0-NEXT:    [[TMP1680:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1681:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3401:%.*]] = icmp sgt i64 [[TMP1680]], [[TMP1681]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3401]], label [[COND_TRUE3403:%.*]], label [[COND_FALSE3404:%.*]]
// SIMD-ONLY0:       cond.true3403:
// SIMD-ONLY0-NEXT:    [[TMP1682:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3405:%.*]]
// SIMD-ONLY0:       cond.false3404:
// SIMD-ONLY0-NEXT:    [[TMP1683:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3405]]
// SIMD-ONLY0:       cond.end3405:
// SIMD-ONLY0-NEXT:    [[COND3406:%.*]] = phi i64 [ [[TMP1682]], [[COND_TRUE3403]] ], [ [[TMP1683]], [[COND_FALSE3404]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3406]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1684:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1685:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3407:%.*]] = icmp slt i64 [[TMP1684]], [[TMP1685]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3407]], label [[COND_TRUE3409:%.*]], label [[COND_FALSE3410:%.*]]
// SIMD-ONLY0:       cond.true3409:
// SIMD-ONLY0-NEXT:    [[TMP1686:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3411:%.*]]
// SIMD-ONLY0:       cond.false3410:
// SIMD-ONLY0-NEXT:    [[TMP1687:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3411]]
// SIMD-ONLY0:       cond.end3411:
// SIMD-ONLY0-NEXT:    [[COND3412:%.*]] = phi i64 [ [[TMP1686]], [[COND_TRUE3409]] ], [ [[TMP1687]], [[COND_FALSE3410]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3412]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1688:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1689:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3413:%.*]] = icmp sgt i64 [[TMP1688]], [[TMP1689]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3413]], label [[COND_TRUE3415:%.*]], label [[COND_FALSE3416:%.*]]
// SIMD-ONLY0:       cond.true3415:
// SIMD-ONLY0-NEXT:    [[TMP1690:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3417:%.*]]
// SIMD-ONLY0:       cond.false3416:
// SIMD-ONLY0-NEXT:    [[TMP1691:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3417]]
// SIMD-ONLY0:       cond.end3417:
// SIMD-ONLY0-NEXT:    [[COND3418:%.*]] = phi i64 [ [[TMP1690]], [[COND_TRUE3415]] ], [ [[TMP1691]], [[COND_FALSE3416]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3418]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1692:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1693:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3419:%.*]] = icmp slt i64 [[TMP1692]], [[TMP1693]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3419]], label [[COND_TRUE3421:%.*]], label [[COND_FALSE3422:%.*]]
// SIMD-ONLY0:       cond.true3421:
// SIMD-ONLY0-NEXT:    [[TMP1694:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3423:%.*]]
// SIMD-ONLY0:       cond.false3422:
// SIMD-ONLY0-NEXT:    [[TMP1695:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3423]]
// SIMD-ONLY0:       cond.end3423:
// SIMD-ONLY0-NEXT:    [[COND3424:%.*]] = phi i64 [ [[TMP1694]], [[COND_TRUE3421]] ], [ [[TMP1695]], [[COND_FALSE3422]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3424]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1696:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1697:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3425:%.*]] = icmp sgt i64 [[TMP1696]], [[TMP1697]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3425]], label [[IF_THEN3427:%.*]], label [[IF_END3428:%.*]]
// SIMD-ONLY0:       if.then3427:
// SIMD-ONLY0-NEXT:    [[TMP1698:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1698]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3428]]
// SIMD-ONLY0:       if.end3428:
// SIMD-ONLY0-NEXT:    [[TMP1699:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1700:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3429:%.*]] = icmp slt i64 [[TMP1699]], [[TMP1700]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3429]], label [[IF_THEN3431:%.*]], label [[IF_END3432:%.*]]
// SIMD-ONLY0:       if.then3431:
// SIMD-ONLY0-NEXT:    [[TMP1701:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1701]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3432]]
// SIMD-ONLY0:       if.end3432:
// SIMD-ONLY0-NEXT:    [[TMP1702:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1703:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3433:%.*]] = icmp sgt i64 [[TMP1702]], [[TMP1703]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3433]], label [[IF_THEN3435:%.*]], label [[IF_END3436:%.*]]
// SIMD-ONLY0:       if.then3435:
// SIMD-ONLY0-NEXT:    [[TMP1704:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1704]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3436]]
// SIMD-ONLY0:       if.end3436:
// SIMD-ONLY0-NEXT:    [[TMP1705:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1706:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3437:%.*]] = icmp slt i64 [[TMP1705]], [[TMP1706]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3437]], label [[IF_THEN3439:%.*]], label [[IF_END3440:%.*]]
// SIMD-ONLY0:       if.then3439:
// SIMD-ONLY0-NEXT:    [[TMP1707:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1707]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3440]]
// SIMD-ONLY0:       if.end3440:
// SIMD-ONLY0-NEXT:    [[TMP1708:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1709:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3441:%.*]] = icmp eq i64 [[TMP1708]], [[TMP1709]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3441]], label [[COND_TRUE3443:%.*]], label [[COND_FALSE3444:%.*]]
// SIMD-ONLY0:       cond.true3443:
// SIMD-ONLY0-NEXT:    [[TMP1710:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3445:%.*]]
// SIMD-ONLY0:       cond.false3444:
// SIMD-ONLY0-NEXT:    [[TMP1711:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3445]]
// SIMD-ONLY0:       cond.end3445:
// SIMD-ONLY0-NEXT:    [[COND3446:%.*]] = phi i64 [ [[TMP1710]], [[COND_TRUE3443]] ], [ [[TMP1711]], [[COND_FALSE3444]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3446]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1712:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1713:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3447:%.*]] = icmp eq i64 [[TMP1712]], [[TMP1713]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3447]], label [[COND_TRUE3449:%.*]], label [[COND_FALSE3450:%.*]]
// SIMD-ONLY0:       cond.true3449:
// SIMD-ONLY0-NEXT:    [[TMP1714:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3451:%.*]]
// SIMD-ONLY0:       cond.false3450:
// SIMD-ONLY0-NEXT:    [[TMP1715:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3451]]
// SIMD-ONLY0:       cond.end3451:
// SIMD-ONLY0-NEXT:    [[COND3452:%.*]] = phi i64 [ [[TMP1714]], [[COND_TRUE3449]] ], [ [[TMP1715]], [[COND_FALSE3450]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3452]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1716:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1717:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3453:%.*]] = icmp eq i64 [[TMP1716]], [[TMP1717]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3453]], label [[IF_THEN3455:%.*]], label [[IF_END3456:%.*]]
// SIMD-ONLY0:       if.then3455:
// SIMD-ONLY0-NEXT:    [[TMP1718:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1718]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3456]]
// SIMD-ONLY0:       if.end3456:
// SIMD-ONLY0-NEXT:    [[TMP1719:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1720:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3457:%.*]] = icmp eq i64 [[TMP1719]], [[TMP1720]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3457]], label [[IF_THEN3459:%.*]], label [[IF_END3460:%.*]]
// SIMD-ONLY0:       if.then3459:
// SIMD-ONLY0-NEXT:    [[TMP1721:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1721]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3460]]
// SIMD-ONLY0:       if.end3460:
// SIMD-ONLY0-NEXT:    [[TMP1722:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1723:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3461:%.*]] = icmp ugt i64 [[TMP1722]], [[TMP1723]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3461]], label [[COND_TRUE3463:%.*]], label [[COND_FALSE3464:%.*]]
// SIMD-ONLY0:       cond.true3463:
// SIMD-ONLY0-NEXT:    [[TMP1724:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3465:%.*]]
// SIMD-ONLY0:       cond.false3464:
// SIMD-ONLY0-NEXT:    [[TMP1725:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3465]]
// SIMD-ONLY0:       cond.end3465:
// SIMD-ONLY0-NEXT:    [[COND3466:%.*]] = phi i64 [ [[TMP1724]], [[COND_TRUE3463]] ], [ [[TMP1725]], [[COND_FALSE3464]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3466]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1726:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1727:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3467:%.*]] = icmp ult i64 [[TMP1726]], [[TMP1727]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3467]], label [[COND_TRUE3469:%.*]], label [[COND_FALSE3470:%.*]]
// SIMD-ONLY0:       cond.true3469:
// SIMD-ONLY0-NEXT:    [[TMP1728:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3471:%.*]]
// SIMD-ONLY0:       cond.false3470:
// SIMD-ONLY0-NEXT:    [[TMP1729:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3471]]
// SIMD-ONLY0:       cond.end3471:
// SIMD-ONLY0-NEXT:    [[COND3472:%.*]] = phi i64 [ [[TMP1728]], [[COND_TRUE3469]] ], [ [[TMP1729]], [[COND_FALSE3470]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3472]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1730:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1731:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3473:%.*]] = icmp ugt i64 [[TMP1730]], [[TMP1731]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3473]], label [[COND_TRUE3475:%.*]], label [[COND_FALSE3476:%.*]]
// SIMD-ONLY0:       cond.true3475:
// SIMD-ONLY0-NEXT:    [[TMP1732:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3477:%.*]]
// SIMD-ONLY0:       cond.false3476:
// SIMD-ONLY0-NEXT:    [[TMP1733:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3477]]
// SIMD-ONLY0:       cond.end3477:
// SIMD-ONLY0-NEXT:    [[COND3478:%.*]] = phi i64 [ [[TMP1732]], [[COND_TRUE3475]] ], [ [[TMP1733]], [[COND_FALSE3476]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3478]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1734:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1735:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3479:%.*]] = icmp ult i64 [[TMP1734]], [[TMP1735]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3479]], label [[COND_TRUE3481:%.*]], label [[COND_FALSE3482:%.*]]
// SIMD-ONLY0:       cond.true3481:
// SIMD-ONLY0-NEXT:    [[TMP1736:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3483:%.*]]
// SIMD-ONLY0:       cond.false3482:
// SIMD-ONLY0-NEXT:    [[TMP1737:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3483]]
// SIMD-ONLY0:       cond.end3483:
// SIMD-ONLY0-NEXT:    [[COND3484:%.*]] = phi i64 [ [[TMP1736]], [[COND_TRUE3481]] ], [ [[TMP1737]], [[COND_FALSE3482]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3484]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1738:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1739:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3485:%.*]] = icmp ugt i64 [[TMP1738]], [[TMP1739]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3485]], label [[IF_THEN3487:%.*]], label [[IF_END3488:%.*]]
// SIMD-ONLY0:       if.then3487:
// SIMD-ONLY0-NEXT:    [[TMP1740:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1740]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3488]]
// SIMD-ONLY0:       if.end3488:
// SIMD-ONLY0-NEXT:    [[TMP1741:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1742:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3489:%.*]] = icmp ult i64 [[TMP1741]], [[TMP1742]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3489]], label [[IF_THEN3491:%.*]], label [[IF_END3492:%.*]]
// SIMD-ONLY0:       if.then3491:
// SIMD-ONLY0-NEXT:    [[TMP1743:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1743]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3492]]
// SIMD-ONLY0:       if.end3492:
// SIMD-ONLY0-NEXT:    [[TMP1744:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1745:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3493:%.*]] = icmp ugt i64 [[TMP1744]], [[TMP1745]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3493]], label [[IF_THEN3495:%.*]], label [[IF_END3496:%.*]]
// SIMD-ONLY0:       if.then3495:
// SIMD-ONLY0-NEXT:    [[TMP1746:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1746]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3496]]
// SIMD-ONLY0:       if.end3496:
// SIMD-ONLY0-NEXT:    [[TMP1747:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1748:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3497:%.*]] = icmp ult i64 [[TMP1747]], [[TMP1748]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3497]], label [[IF_THEN3499:%.*]], label [[IF_END3500:%.*]]
// SIMD-ONLY0:       if.then3499:
// SIMD-ONLY0-NEXT:    [[TMP1749:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1749]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3500]]
// SIMD-ONLY0:       if.end3500:
// SIMD-ONLY0-NEXT:    [[TMP1750:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1751:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3501:%.*]] = icmp eq i64 [[TMP1750]], [[TMP1751]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3501]], label [[COND_TRUE3503:%.*]], label [[COND_FALSE3504:%.*]]
// SIMD-ONLY0:       cond.true3503:
// SIMD-ONLY0-NEXT:    [[TMP1752:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3505:%.*]]
// SIMD-ONLY0:       cond.false3504:
// SIMD-ONLY0-NEXT:    [[TMP1753:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3505]]
// SIMD-ONLY0:       cond.end3505:
// SIMD-ONLY0-NEXT:    [[COND3506:%.*]] = phi i64 [ [[TMP1752]], [[COND_TRUE3503]] ], [ [[TMP1753]], [[COND_FALSE3504]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3506]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1754:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1755:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3507:%.*]] = icmp eq i64 [[TMP1754]], [[TMP1755]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3507]], label [[COND_TRUE3509:%.*]], label [[COND_FALSE3510:%.*]]
// SIMD-ONLY0:       cond.true3509:
// SIMD-ONLY0-NEXT:    [[TMP1756:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3511:%.*]]
// SIMD-ONLY0:       cond.false3510:
// SIMD-ONLY0-NEXT:    [[TMP1757:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3511]]
// SIMD-ONLY0:       cond.end3511:
// SIMD-ONLY0-NEXT:    [[COND3512:%.*]] = phi i64 [ [[TMP1756]], [[COND_TRUE3509]] ], [ [[TMP1757]], [[COND_FALSE3510]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3512]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1758:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1759:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3513:%.*]] = icmp eq i64 [[TMP1758]], [[TMP1759]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3513]], label [[IF_THEN3515:%.*]], label [[IF_END3516:%.*]]
// SIMD-ONLY0:       if.then3515:
// SIMD-ONLY0-NEXT:    [[TMP1760:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1760]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3516]]
// SIMD-ONLY0:       if.end3516:
// SIMD-ONLY0-NEXT:    [[TMP1761:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1762:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3517:%.*]] = icmp eq i64 [[TMP1761]], [[TMP1762]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3517]], label [[IF_THEN3519:%.*]], label [[IF_END3520:%.*]]
// SIMD-ONLY0:       if.then3519:
// SIMD-ONLY0-NEXT:    [[TMP1763:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1763]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3520]]
// SIMD-ONLY0:       if.end3520:
// SIMD-ONLY0-NEXT:    [[TMP1764:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1765:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3521:%.*]] = icmp sgt i64 [[TMP1764]], [[TMP1765]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3521]], label [[COND_TRUE3523:%.*]], label [[COND_FALSE3524:%.*]]
// SIMD-ONLY0:       cond.true3523:
// SIMD-ONLY0-NEXT:    [[TMP1766:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3525:%.*]]
// SIMD-ONLY0:       cond.false3524:
// SIMD-ONLY0-NEXT:    [[TMP1767:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3525]]
// SIMD-ONLY0:       cond.end3525:
// SIMD-ONLY0-NEXT:    [[COND3526:%.*]] = phi i64 [ [[TMP1766]], [[COND_TRUE3523]] ], [ [[TMP1767]], [[COND_FALSE3524]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3526]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1768:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1769:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3527:%.*]] = icmp slt i64 [[TMP1768]], [[TMP1769]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3527]], label [[COND_TRUE3529:%.*]], label [[COND_FALSE3530:%.*]]
// SIMD-ONLY0:       cond.true3529:
// SIMD-ONLY0-NEXT:    [[TMP1770:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3531:%.*]]
// SIMD-ONLY0:       cond.false3530:
// SIMD-ONLY0-NEXT:    [[TMP1771:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3531]]
// SIMD-ONLY0:       cond.end3531:
// SIMD-ONLY0-NEXT:    [[COND3532:%.*]] = phi i64 [ [[TMP1770]], [[COND_TRUE3529]] ], [ [[TMP1771]], [[COND_FALSE3530]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3532]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1772:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1773:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3533:%.*]] = icmp sgt i64 [[TMP1772]], [[TMP1773]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3533]], label [[COND_TRUE3535:%.*]], label [[COND_FALSE3536:%.*]]
// SIMD-ONLY0:       cond.true3535:
// SIMD-ONLY0-NEXT:    [[TMP1774:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3537:%.*]]
// SIMD-ONLY0:       cond.false3536:
// SIMD-ONLY0-NEXT:    [[TMP1775:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3537]]
// SIMD-ONLY0:       cond.end3537:
// SIMD-ONLY0-NEXT:    [[COND3538:%.*]] = phi i64 [ [[TMP1774]], [[COND_TRUE3535]] ], [ [[TMP1775]], [[COND_FALSE3536]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3538]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1776:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1777:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3539:%.*]] = icmp slt i64 [[TMP1776]], [[TMP1777]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3539]], label [[COND_TRUE3541:%.*]], label [[COND_FALSE3542:%.*]]
// SIMD-ONLY0:       cond.true3541:
// SIMD-ONLY0-NEXT:    [[TMP1778:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3543:%.*]]
// SIMD-ONLY0:       cond.false3542:
// SIMD-ONLY0-NEXT:    [[TMP1779:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3543]]
// SIMD-ONLY0:       cond.end3543:
// SIMD-ONLY0-NEXT:    [[COND3544:%.*]] = phi i64 [ [[TMP1778]], [[COND_TRUE3541]] ], [ [[TMP1779]], [[COND_FALSE3542]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3544]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1780:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1781:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3545:%.*]] = icmp sgt i64 [[TMP1780]], [[TMP1781]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3545]], label [[IF_THEN3547:%.*]], label [[IF_END3548:%.*]]
// SIMD-ONLY0:       if.then3547:
// SIMD-ONLY0-NEXT:    [[TMP1782:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1782]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3548]]
// SIMD-ONLY0:       if.end3548:
// SIMD-ONLY0-NEXT:    [[TMP1783:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1784:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3549:%.*]] = icmp slt i64 [[TMP1783]], [[TMP1784]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3549]], label [[IF_THEN3551:%.*]], label [[IF_END3552:%.*]]
// SIMD-ONLY0:       if.then3551:
// SIMD-ONLY0-NEXT:    [[TMP1785:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1785]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3552]]
// SIMD-ONLY0:       if.end3552:
// SIMD-ONLY0-NEXT:    [[TMP1786:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1787:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3553:%.*]] = icmp sgt i64 [[TMP1786]], [[TMP1787]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3553]], label [[IF_THEN3555:%.*]], label [[IF_END3556:%.*]]
// SIMD-ONLY0:       if.then3555:
// SIMD-ONLY0-NEXT:    [[TMP1788:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1788]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3556]]
// SIMD-ONLY0:       if.end3556:
// SIMD-ONLY0-NEXT:    [[TMP1789:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1790:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3557:%.*]] = icmp slt i64 [[TMP1789]], [[TMP1790]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3557]], label [[IF_THEN3559:%.*]], label [[IF_END3560:%.*]]
// SIMD-ONLY0:       if.then3559:
// SIMD-ONLY0-NEXT:    [[TMP1791:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1791]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3560]]
// SIMD-ONLY0:       if.end3560:
// SIMD-ONLY0-NEXT:    [[TMP1792:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1793:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3561:%.*]] = icmp eq i64 [[TMP1792]], [[TMP1793]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3561]], label [[COND_TRUE3563:%.*]], label [[COND_FALSE3564:%.*]]
// SIMD-ONLY0:       cond.true3563:
// SIMD-ONLY0-NEXT:    [[TMP1794:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3565:%.*]]
// SIMD-ONLY0:       cond.false3564:
// SIMD-ONLY0-NEXT:    [[TMP1795:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3565]]
// SIMD-ONLY0:       cond.end3565:
// SIMD-ONLY0-NEXT:    [[COND3566:%.*]] = phi i64 [ [[TMP1794]], [[COND_TRUE3563]] ], [ [[TMP1795]], [[COND_FALSE3564]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3566]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1796:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1797:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3567:%.*]] = icmp eq i64 [[TMP1796]], [[TMP1797]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3567]], label [[COND_TRUE3569:%.*]], label [[COND_FALSE3570:%.*]]
// SIMD-ONLY0:       cond.true3569:
// SIMD-ONLY0-NEXT:    [[TMP1798:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3571:%.*]]
// SIMD-ONLY0:       cond.false3570:
// SIMD-ONLY0-NEXT:    [[TMP1799:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3571]]
// SIMD-ONLY0:       cond.end3571:
// SIMD-ONLY0-NEXT:    [[COND3572:%.*]] = phi i64 [ [[TMP1798]], [[COND_TRUE3569]] ], [ [[TMP1799]], [[COND_FALSE3570]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3572]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1800:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1801:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3573:%.*]] = icmp eq i64 [[TMP1800]], [[TMP1801]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3573]], label [[IF_THEN3575:%.*]], label [[IF_END3576:%.*]]
// SIMD-ONLY0:       if.then3575:
// SIMD-ONLY0-NEXT:    [[TMP1802:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1802]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3576]]
// SIMD-ONLY0:       if.end3576:
// SIMD-ONLY0-NEXT:    [[TMP1803:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1804:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3577:%.*]] = icmp eq i64 [[TMP1803]], [[TMP1804]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3577]], label [[IF_THEN3579:%.*]], label [[IF_END3580:%.*]]
// SIMD-ONLY0:       if.then3579:
// SIMD-ONLY0-NEXT:    [[TMP1805:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1805]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3580]]
// SIMD-ONLY0:       if.end3580:
// SIMD-ONLY0-NEXT:    [[TMP1806:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1807:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3581:%.*]] = icmp ugt i64 [[TMP1806]], [[TMP1807]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3581]], label [[COND_TRUE3583:%.*]], label [[COND_FALSE3584:%.*]]
// SIMD-ONLY0:       cond.true3583:
// SIMD-ONLY0-NEXT:    [[TMP1808:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3585:%.*]]
// SIMD-ONLY0:       cond.false3584:
// SIMD-ONLY0-NEXT:    [[TMP1809:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3585]]
// SIMD-ONLY0:       cond.end3585:
// SIMD-ONLY0-NEXT:    [[COND3586:%.*]] = phi i64 [ [[TMP1808]], [[COND_TRUE3583]] ], [ [[TMP1809]], [[COND_FALSE3584]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3586]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1810:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1811:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3587:%.*]] = icmp ult i64 [[TMP1810]], [[TMP1811]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3587]], label [[COND_TRUE3589:%.*]], label [[COND_FALSE3590:%.*]]
// SIMD-ONLY0:       cond.true3589:
// SIMD-ONLY0-NEXT:    [[TMP1812:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3591:%.*]]
// SIMD-ONLY0:       cond.false3590:
// SIMD-ONLY0-NEXT:    [[TMP1813:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3591]]
// SIMD-ONLY0:       cond.end3591:
// SIMD-ONLY0-NEXT:    [[COND3592:%.*]] = phi i64 [ [[TMP1812]], [[COND_TRUE3589]] ], [ [[TMP1813]], [[COND_FALSE3590]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3592]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1814:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1815:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3593:%.*]] = icmp ugt i64 [[TMP1814]], [[TMP1815]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3593]], label [[COND_TRUE3595:%.*]], label [[COND_FALSE3596:%.*]]
// SIMD-ONLY0:       cond.true3595:
// SIMD-ONLY0-NEXT:    [[TMP1816:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3597:%.*]]
// SIMD-ONLY0:       cond.false3596:
// SIMD-ONLY0-NEXT:    [[TMP1817:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3597]]
// SIMD-ONLY0:       cond.end3597:
// SIMD-ONLY0-NEXT:    [[COND3598:%.*]] = phi i64 [ [[TMP1816]], [[COND_TRUE3595]] ], [ [[TMP1817]], [[COND_FALSE3596]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3598]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1818:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1819:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3599:%.*]] = icmp ult i64 [[TMP1818]], [[TMP1819]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3599]], label [[COND_TRUE3601:%.*]], label [[COND_FALSE3602:%.*]]
// SIMD-ONLY0:       cond.true3601:
// SIMD-ONLY0-NEXT:    [[TMP1820:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3603:%.*]]
// SIMD-ONLY0:       cond.false3602:
// SIMD-ONLY0-NEXT:    [[TMP1821:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3603]]
// SIMD-ONLY0:       cond.end3603:
// SIMD-ONLY0-NEXT:    [[COND3604:%.*]] = phi i64 [ [[TMP1820]], [[COND_TRUE3601]] ], [ [[TMP1821]], [[COND_FALSE3602]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3604]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1822:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1823:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3605:%.*]] = icmp ugt i64 [[TMP1822]], [[TMP1823]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3605]], label [[IF_THEN3607:%.*]], label [[IF_END3608:%.*]]
// SIMD-ONLY0:       if.then3607:
// SIMD-ONLY0-NEXT:    [[TMP1824:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1824]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3608]]
// SIMD-ONLY0:       if.end3608:
// SIMD-ONLY0-NEXT:    [[TMP1825:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1826:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3609:%.*]] = icmp ult i64 [[TMP1825]], [[TMP1826]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3609]], label [[IF_THEN3611:%.*]], label [[IF_END3612:%.*]]
// SIMD-ONLY0:       if.then3611:
// SIMD-ONLY0-NEXT:    [[TMP1827:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1827]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3612]]
// SIMD-ONLY0:       if.end3612:
// SIMD-ONLY0-NEXT:    [[TMP1828:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1829:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3613:%.*]] = icmp ugt i64 [[TMP1828]], [[TMP1829]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3613]], label [[IF_THEN3615:%.*]], label [[IF_END3616:%.*]]
// SIMD-ONLY0:       if.then3615:
// SIMD-ONLY0-NEXT:    [[TMP1830:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1830]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3616]]
// SIMD-ONLY0:       if.end3616:
// SIMD-ONLY0-NEXT:    [[TMP1831:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1832:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3617:%.*]] = icmp ult i64 [[TMP1831]], [[TMP1832]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3617]], label [[IF_THEN3619:%.*]], label [[IF_END3620:%.*]]
// SIMD-ONLY0:       if.then3619:
// SIMD-ONLY0-NEXT:    [[TMP1833:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1833]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3620]]
// SIMD-ONLY0:       if.end3620:
// SIMD-ONLY0-NEXT:    [[TMP1834:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1835:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3621:%.*]] = icmp eq i64 [[TMP1834]], [[TMP1835]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3621]], label [[COND_TRUE3623:%.*]], label [[COND_FALSE3624:%.*]]
// SIMD-ONLY0:       cond.true3623:
// SIMD-ONLY0-NEXT:    [[TMP1836:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3625:%.*]]
// SIMD-ONLY0:       cond.false3624:
// SIMD-ONLY0-NEXT:    [[TMP1837:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3625]]
// SIMD-ONLY0:       cond.end3625:
// SIMD-ONLY0-NEXT:    [[COND3626:%.*]] = phi i64 [ [[TMP1836]], [[COND_TRUE3623]] ], [ [[TMP1837]], [[COND_FALSE3624]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3626]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1838:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1839:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3627:%.*]] = icmp eq i64 [[TMP1838]], [[TMP1839]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3627]], label [[COND_TRUE3629:%.*]], label [[COND_FALSE3630:%.*]]
// SIMD-ONLY0:       cond.true3629:
// SIMD-ONLY0-NEXT:    [[TMP1840:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3631:%.*]]
// SIMD-ONLY0:       cond.false3630:
// SIMD-ONLY0-NEXT:    [[TMP1841:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3631]]
// SIMD-ONLY0:       cond.end3631:
// SIMD-ONLY0-NEXT:    [[COND3632:%.*]] = phi i64 [ [[TMP1840]], [[COND_TRUE3629]] ], [ [[TMP1841]], [[COND_FALSE3630]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3632]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1842:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1843:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3633:%.*]] = icmp eq i64 [[TMP1842]], [[TMP1843]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3633]], label [[IF_THEN3635:%.*]], label [[IF_END3636:%.*]]
// SIMD-ONLY0:       if.then3635:
// SIMD-ONLY0-NEXT:    [[TMP1844:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1844]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3636]]
// SIMD-ONLY0:       if.end3636:
// SIMD-ONLY0-NEXT:    [[TMP1845:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1846:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3637:%.*]] = icmp eq i64 [[TMP1845]], [[TMP1846]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3637]], label [[IF_THEN3639:%.*]], label [[IF_END3640:%.*]]
// SIMD-ONLY0:       if.then3639:
// SIMD-ONLY0-NEXT:    [[TMP1847:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1847]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3640]]
// SIMD-ONLY0:       if.end3640:
// SIMD-ONLY0-NEXT:    [[TMP1848:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1849:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3641:%.*]] = icmp sgt i64 [[TMP1848]], [[TMP1849]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3641]], label [[COND_TRUE3643:%.*]], label [[COND_FALSE3644:%.*]]
// SIMD-ONLY0:       cond.true3643:
// SIMD-ONLY0-NEXT:    [[TMP1850:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3645:%.*]]
// SIMD-ONLY0:       cond.false3644:
// SIMD-ONLY0-NEXT:    [[TMP1851:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3645]]
// SIMD-ONLY0:       cond.end3645:
// SIMD-ONLY0-NEXT:    [[COND3646:%.*]] = phi i64 [ [[TMP1850]], [[COND_TRUE3643]] ], [ [[TMP1851]], [[COND_FALSE3644]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3646]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1852:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1853:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3647:%.*]] = icmp slt i64 [[TMP1852]], [[TMP1853]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3647]], label [[COND_TRUE3649:%.*]], label [[COND_FALSE3650:%.*]]
// SIMD-ONLY0:       cond.true3649:
// SIMD-ONLY0-NEXT:    [[TMP1854:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3651:%.*]]
// SIMD-ONLY0:       cond.false3650:
// SIMD-ONLY0-NEXT:    [[TMP1855:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3651]]
// SIMD-ONLY0:       cond.end3651:
// SIMD-ONLY0-NEXT:    [[COND3652:%.*]] = phi i64 [ [[TMP1854]], [[COND_TRUE3649]] ], [ [[TMP1855]], [[COND_FALSE3650]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3652]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1856:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1857:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3653:%.*]] = icmp sgt i64 [[TMP1856]], [[TMP1857]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3653]], label [[COND_TRUE3655:%.*]], label [[COND_FALSE3656:%.*]]
// SIMD-ONLY0:       cond.true3655:
// SIMD-ONLY0-NEXT:    [[TMP1858:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3657:%.*]]
// SIMD-ONLY0:       cond.false3656:
// SIMD-ONLY0-NEXT:    [[TMP1859:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3657]]
// SIMD-ONLY0:       cond.end3657:
// SIMD-ONLY0-NEXT:    [[COND3658:%.*]] = phi i64 [ [[TMP1858]], [[COND_TRUE3655]] ], [ [[TMP1859]], [[COND_FALSE3656]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3658]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1860:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1861:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3659:%.*]] = icmp slt i64 [[TMP1860]], [[TMP1861]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3659]], label [[COND_TRUE3661:%.*]], label [[COND_FALSE3662:%.*]]
// SIMD-ONLY0:       cond.true3661:
// SIMD-ONLY0-NEXT:    [[TMP1862:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3663:%.*]]
// SIMD-ONLY0:       cond.false3662:
// SIMD-ONLY0-NEXT:    [[TMP1863:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3663]]
// SIMD-ONLY0:       cond.end3663:
// SIMD-ONLY0-NEXT:    [[COND3664:%.*]] = phi i64 [ [[TMP1862]], [[COND_TRUE3661]] ], [ [[TMP1863]], [[COND_FALSE3662]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3664]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1864:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1865:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3665:%.*]] = icmp sgt i64 [[TMP1864]], [[TMP1865]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3665]], label [[IF_THEN3667:%.*]], label [[IF_END3668:%.*]]
// SIMD-ONLY0:       if.then3667:
// SIMD-ONLY0-NEXT:    [[TMP1866:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1866]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3668]]
// SIMD-ONLY0:       if.end3668:
// SIMD-ONLY0-NEXT:    [[TMP1867:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1868:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3669:%.*]] = icmp slt i64 [[TMP1867]], [[TMP1868]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3669]], label [[IF_THEN3671:%.*]], label [[IF_END3672:%.*]]
// SIMD-ONLY0:       if.then3671:
// SIMD-ONLY0-NEXT:    [[TMP1869:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1869]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3672]]
// SIMD-ONLY0:       if.end3672:
// SIMD-ONLY0-NEXT:    [[TMP1870:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1871:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3673:%.*]] = icmp sgt i64 [[TMP1870]], [[TMP1871]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3673]], label [[IF_THEN3675:%.*]], label [[IF_END3676:%.*]]
// SIMD-ONLY0:       if.then3675:
// SIMD-ONLY0-NEXT:    [[TMP1872:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1872]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3676]]
// SIMD-ONLY0:       if.end3676:
// SIMD-ONLY0-NEXT:    [[TMP1873:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1874:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3677:%.*]] = icmp slt i64 [[TMP1873]], [[TMP1874]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3677]], label [[IF_THEN3679:%.*]], label [[IF_END3680:%.*]]
// SIMD-ONLY0:       if.then3679:
// SIMD-ONLY0-NEXT:    [[TMP1875:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1875]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3680]]
// SIMD-ONLY0:       if.end3680:
// SIMD-ONLY0-NEXT:    [[TMP1876:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1877:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3681:%.*]] = icmp eq i64 [[TMP1876]], [[TMP1877]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3681]], label [[COND_TRUE3683:%.*]], label [[COND_FALSE3684:%.*]]
// SIMD-ONLY0:       cond.true3683:
// SIMD-ONLY0-NEXT:    [[TMP1878:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3685:%.*]]
// SIMD-ONLY0:       cond.false3684:
// SIMD-ONLY0-NEXT:    [[TMP1879:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3685]]
// SIMD-ONLY0:       cond.end3685:
// SIMD-ONLY0-NEXT:    [[COND3686:%.*]] = phi i64 [ [[TMP1878]], [[COND_TRUE3683]] ], [ [[TMP1879]], [[COND_FALSE3684]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3686]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1880:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1881:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3687:%.*]] = icmp eq i64 [[TMP1880]], [[TMP1881]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3687]], label [[COND_TRUE3689:%.*]], label [[COND_FALSE3690:%.*]]
// SIMD-ONLY0:       cond.true3689:
// SIMD-ONLY0-NEXT:    [[TMP1882:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3691:%.*]]
// SIMD-ONLY0:       cond.false3690:
// SIMD-ONLY0-NEXT:    [[TMP1883:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3691]]
// SIMD-ONLY0:       cond.end3691:
// SIMD-ONLY0-NEXT:    [[COND3692:%.*]] = phi i64 [ [[TMP1882]], [[COND_TRUE3689]] ], [ [[TMP1883]], [[COND_FALSE3690]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3692]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1884:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1885:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3693:%.*]] = icmp eq i64 [[TMP1884]], [[TMP1885]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3693]], label [[IF_THEN3695:%.*]], label [[IF_END3696:%.*]]
// SIMD-ONLY0:       if.then3695:
// SIMD-ONLY0-NEXT:    [[TMP1886:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1886]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3696]]
// SIMD-ONLY0:       if.end3696:
// SIMD-ONLY0-NEXT:    [[TMP1887:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1888:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3697:%.*]] = icmp eq i64 [[TMP1887]], [[TMP1888]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3697]], label [[IF_THEN3699:%.*]], label [[IF_END3700:%.*]]
// SIMD-ONLY0:       if.then3699:
// SIMD-ONLY0-NEXT:    [[TMP1889:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1889]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3700]]
// SIMD-ONLY0:       if.end3700:
// SIMD-ONLY0-NEXT:    [[TMP1890:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1891:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3701:%.*]] = icmp ugt i64 [[TMP1890]], [[TMP1891]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3701]], label [[COND_TRUE3703:%.*]], label [[COND_FALSE3704:%.*]]
// SIMD-ONLY0:       cond.true3703:
// SIMD-ONLY0-NEXT:    [[TMP1892:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3705:%.*]]
// SIMD-ONLY0:       cond.false3704:
// SIMD-ONLY0-NEXT:    [[TMP1893:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3705]]
// SIMD-ONLY0:       cond.end3705:
// SIMD-ONLY0-NEXT:    [[COND3706:%.*]] = phi i64 [ [[TMP1892]], [[COND_TRUE3703]] ], [ [[TMP1893]], [[COND_FALSE3704]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3706]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1894:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1895:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3707:%.*]] = icmp ult i64 [[TMP1894]], [[TMP1895]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3707]], label [[COND_TRUE3709:%.*]], label [[COND_FALSE3710:%.*]]
// SIMD-ONLY0:       cond.true3709:
// SIMD-ONLY0-NEXT:    [[TMP1896:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3711:%.*]]
// SIMD-ONLY0:       cond.false3710:
// SIMD-ONLY0-NEXT:    [[TMP1897:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3711]]
// SIMD-ONLY0:       cond.end3711:
// SIMD-ONLY0-NEXT:    [[COND3712:%.*]] = phi i64 [ [[TMP1896]], [[COND_TRUE3709]] ], [ [[TMP1897]], [[COND_FALSE3710]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3712]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1898:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1899:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3713:%.*]] = icmp ugt i64 [[TMP1898]], [[TMP1899]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3713]], label [[COND_TRUE3715:%.*]], label [[COND_FALSE3716:%.*]]
// SIMD-ONLY0:       cond.true3715:
// SIMD-ONLY0-NEXT:    [[TMP1900:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3717:%.*]]
// SIMD-ONLY0:       cond.false3716:
// SIMD-ONLY0-NEXT:    [[TMP1901:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3717]]
// SIMD-ONLY0:       cond.end3717:
// SIMD-ONLY0-NEXT:    [[COND3718:%.*]] = phi i64 [ [[TMP1900]], [[COND_TRUE3715]] ], [ [[TMP1901]], [[COND_FALSE3716]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3718]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1902:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1903:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3719:%.*]] = icmp ult i64 [[TMP1902]], [[TMP1903]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3719]], label [[COND_TRUE3721:%.*]], label [[COND_FALSE3722:%.*]]
// SIMD-ONLY0:       cond.true3721:
// SIMD-ONLY0-NEXT:    [[TMP1904:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3723:%.*]]
// SIMD-ONLY0:       cond.false3722:
// SIMD-ONLY0-NEXT:    [[TMP1905:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3723]]
// SIMD-ONLY0:       cond.end3723:
// SIMD-ONLY0-NEXT:    [[COND3724:%.*]] = phi i64 [ [[TMP1904]], [[COND_TRUE3721]] ], [ [[TMP1905]], [[COND_FALSE3722]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3724]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1906:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1907:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3725:%.*]] = icmp ugt i64 [[TMP1906]], [[TMP1907]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3725]], label [[IF_THEN3727:%.*]], label [[IF_END3728:%.*]]
// SIMD-ONLY0:       if.then3727:
// SIMD-ONLY0-NEXT:    [[TMP1908:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1908]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3728]]
// SIMD-ONLY0:       if.end3728:
// SIMD-ONLY0-NEXT:    [[TMP1909:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1910:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3729:%.*]] = icmp ult i64 [[TMP1909]], [[TMP1910]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3729]], label [[IF_THEN3731:%.*]], label [[IF_END3732:%.*]]
// SIMD-ONLY0:       if.then3731:
// SIMD-ONLY0-NEXT:    [[TMP1911:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1911]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3732]]
// SIMD-ONLY0:       if.end3732:
// SIMD-ONLY0-NEXT:    [[TMP1912:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1913:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3733:%.*]] = icmp ugt i64 [[TMP1912]], [[TMP1913]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3733]], label [[IF_THEN3735:%.*]], label [[IF_END3736:%.*]]
// SIMD-ONLY0:       if.then3735:
// SIMD-ONLY0-NEXT:    [[TMP1914:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1914]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3736]]
// SIMD-ONLY0:       if.end3736:
// SIMD-ONLY0-NEXT:    [[TMP1915:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1916:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3737:%.*]] = icmp ult i64 [[TMP1915]], [[TMP1916]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3737]], label [[IF_THEN3739:%.*]], label [[IF_END3740:%.*]]
// SIMD-ONLY0:       if.then3739:
// SIMD-ONLY0-NEXT:    [[TMP1917:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1917]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3740]]
// SIMD-ONLY0:       if.end3740:
// SIMD-ONLY0-NEXT:    [[TMP1918:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1919:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3741:%.*]] = icmp eq i64 [[TMP1918]], [[TMP1919]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3741]], label [[COND_TRUE3743:%.*]], label [[COND_FALSE3744:%.*]]
// SIMD-ONLY0:       cond.true3743:
// SIMD-ONLY0-NEXT:    [[TMP1920:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3745:%.*]]
// SIMD-ONLY0:       cond.false3744:
// SIMD-ONLY0-NEXT:    [[TMP1921:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3745]]
// SIMD-ONLY0:       cond.end3745:
// SIMD-ONLY0-NEXT:    [[COND3746:%.*]] = phi i64 [ [[TMP1920]], [[COND_TRUE3743]] ], [ [[TMP1921]], [[COND_FALSE3744]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3746]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1922:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1923:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3747:%.*]] = icmp eq i64 [[TMP1922]], [[TMP1923]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3747]], label [[COND_TRUE3749:%.*]], label [[COND_FALSE3750:%.*]]
// SIMD-ONLY0:       cond.true3749:
// SIMD-ONLY0-NEXT:    [[TMP1924:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3751:%.*]]
// SIMD-ONLY0:       cond.false3750:
// SIMD-ONLY0-NEXT:    [[TMP1925:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3751]]
// SIMD-ONLY0:       cond.end3751:
// SIMD-ONLY0-NEXT:    [[COND3752:%.*]] = phi i64 [ [[TMP1924]], [[COND_TRUE3749]] ], [ [[TMP1925]], [[COND_FALSE3750]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3752]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1926:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1927:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3753:%.*]] = icmp eq i64 [[TMP1926]], [[TMP1927]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3753]], label [[IF_THEN3755:%.*]], label [[IF_END3756:%.*]]
// SIMD-ONLY0:       if.then3755:
// SIMD-ONLY0-NEXT:    [[TMP1928:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1928]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3756]]
// SIMD-ONLY0:       if.end3756:
// SIMD-ONLY0-NEXT:    [[TMP1929:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1930:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3757:%.*]] = icmp eq i64 [[TMP1929]], [[TMP1930]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3757]], label [[IF_THEN3759:%.*]], label [[IF_END3760:%.*]]
// SIMD-ONLY0:       if.then3759:
// SIMD-ONLY0-NEXT:    [[TMP1931:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1931]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3760]]
// SIMD-ONLY0:       if.end3760:
// SIMD-ONLY0-NEXT:    [[TMP1932:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1933:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3761:%.*]] = icmp sgt i64 [[TMP1932]], [[TMP1933]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3761]], label [[COND_TRUE3763:%.*]], label [[COND_FALSE3764:%.*]]
// SIMD-ONLY0:       cond.true3763:
// SIMD-ONLY0-NEXT:    [[TMP1934:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3765:%.*]]
// SIMD-ONLY0:       cond.false3764:
// SIMD-ONLY0-NEXT:    [[TMP1935:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3765]]
// SIMD-ONLY0:       cond.end3765:
// SIMD-ONLY0-NEXT:    [[COND3766:%.*]] = phi i64 [ [[TMP1934]], [[COND_TRUE3763]] ], [ [[TMP1935]], [[COND_FALSE3764]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3766]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1936:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1937:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3767:%.*]] = icmp slt i64 [[TMP1936]], [[TMP1937]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3767]], label [[COND_TRUE3769:%.*]], label [[COND_FALSE3770:%.*]]
// SIMD-ONLY0:       cond.true3769:
// SIMD-ONLY0-NEXT:    [[TMP1938:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3771:%.*]]
// SIMD-ONLY0:       cond.false3770:
// SIMD-ONLY0-NEXT:    [[TMP1939:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3771]]
// SIMD-ONLY0:       cond.end3771:
// SIMD-ONLY0-NEXT:    [[COND3772:%.*]] = phi i64 [ [[TMP1938]], [[COND_TRUE3769]] ], [ [[TMP1939]], [[COND_FALSE3770]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3772]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1940:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1941:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3773:%.*]] = icmp sgt i64 [[TMP1940]], [[TMP1941]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3773]], label [[COND_TRUE3775:%.*]], label [[COND_FALSE3776:%.*]]
// SIMD-ONLY0:       cond.true3775:
// SIMD-ONLY0-NEXT:    [[TMP1942:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3777:%.*]]
// SIMD-ONLY0:       cond.false3776:
// SIMD-ONLY0-NEXT:    [[TMP1943:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3777]]
// SIMD-ONLY0:       cond.end3777:
// SIMD-ONLY0-NEXT:    [[COND3778:%.*]] = phi i64 [ [[TMP1942]], [[COND_TRUE3775]] ], [ [[TMP1943]], [[COND_FALSE3776]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3778]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1944:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1945:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3779:%.*]] = icmp slt i64 [[TMP1944]], [[TMP1945]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3779]], label [[COND_TRUE3781:%.*]], label [[COND_FALSE3782:%.*]]
// SIMD-ONLY0:       cond.true3781:
// SIMD-ONLY0-NEXT:    [[TMP1946:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3783:%.*]]
// SIMD-ONLY0:       cond.false3782:
// SIMD-ONLY0-NEXT:    [[TMP1947:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3783]]
// SIMD-ONLY0:       cond.end3783:
// SIMD-ONLY0-NEXT:    [[COND3784:%.*]] = phi i64 [ [[TMP1946]], [[COND_TRUE3781]] ], [ [[TMP1947]], [[COND_FALSE3782]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3784]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1948:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1949:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3785:%.*]] = icmp sgt i64 [[TMP1948]], [[TMP1949]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3785]], label [[IF_THEN3787:%.*]], label [[IF_END3788:%.*]]
// SIMD-ONLY0:       if.then3787:
// SIMD-ONLY0-NEXT:    [[TMP1950:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1950]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3788]]
// SIMD-ONLY0:       if.end3788:
// SIMD-ONLY0-NEXT:    [[TMP1951:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1952:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3789:%.*]] = icmp slt i64 [[TMP1951]], [[TMP1952]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3789]], label [[IF_THEN3791:%.*]], label [[IF_END3792:%.*]]
// SIMD-ONLY0:       if.then3791:
// SIMD-ONLY0-NEXT:    [[TMP1953:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1953]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3792]]
// SIMD-ONLY0:       if.end3792:
// SIMD-ONLY0-NEXT:    [[TMP1954:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1955:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3793:%.*]] = icmp sgt i64 [[TMP1954]], [[TMP1955]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3793]], label [[IF_THEN3795:%.*]], label [[IF_END3796:%.*]]
// SIMD-ONLY0:       if.then3795:
// SIMD-ONLY0-NEXT:    [[TMP1956:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1956]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3796]]
// SIMD-ONLY0:       if.end3796:
// SIMD-ONLY0-NEXT:    [[TMP1957:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1958:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3797:%.*]] = icmp slt i64 [[TMP1957]], [[TMP1958]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3797]], label [[IF_THEN3799:%.*]], label [[IF_END3800:%.*]]
// SIMD-ONLY0:       if.then3799:
// SIMD-ONLY0-NEXT:    [[TMP1959:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1959]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3800]]
// SIMD-ONLY0:       if.end3800:
// SIMD-ONLY0-NEXT:    [[TMP1960:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1961:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3801:%.*]] = icmp eq i64 [[TMP1960]], [[TMP1961]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3801]], label [[COND_TRUE3803:%.*]], label [[COND_FALSE3804:%.*]]
// SIMD-ONLY0:       cond.true3803:
// SIMD-ONLY0-NEXT:    [[TMP1962:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3805:%.*]]
// SIMD-ONLY0:       cond.false3804:
// SIMD-ONLY0-NEXT:    [[TMP1963:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3805]]
// SIMD-ONLY0:       cond.end3805:
// SIMD-ONLY0-NEXT:    [[COND3806:%.*]] = phi i64 [ [[TMP1962]], [[COND_TRUE3803]] ], [ [[TMP1963]], [[COND_FALSE3804]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3806]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1964:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1965:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3807:%.*]] = icmp eq i64 [[TMP1964]], [[TMP1965]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3807]], label [[COND_TRUE3809:%.*]], label [[COND_FALSE3810:%.*]]
// SIMD-ONLY0:       cond.true3809:
// SIMD-ONLY0-NEXT:    [[TMP1966:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3811:%.*]]
// SIMD-ONLY0:       cond.false3810:
// SIMD-ONLY0-NEXT:    [[TMP1967:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3811]]
// SIMD-ONLY0:       cond.end3811:
// SIMD-ONLY0-NEXT:    [[COND3812:%.*]] = phi i64 [ [[TMP1966]], [[COND_TRUE3809]] ], [ [[TMP1967]], [[COND_FALSE3810]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3812]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1968:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1969:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3813:%.*]] = icmp eq i64 [[TMP1968]], [[TMP1969]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3813]], label [[IF_THEN3815:%.*]], label [[IF_END3816:%.*]]
// SIMD-ONLY0:       if.then3815:
// SIMD-ONLY0-NEXT:    [[TMP1970:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1970]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3816]]
// SIMD-ONLY0:       if.end3816:
// SIMD-ONLY0-NEXT:    [[TMP1971:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1972:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3817:%.*]] = icmp eq i64 [[TMP1971]], [[TMP1972]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3817]], label [[IF_THEN3819:%.*]], label [[IF_END3820:%.*]]
// SIMD-ONLY0:       if.then3819:
// SIMD-ONLY0-NEXT:    [[TMP1973:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1973]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3820]]
// SIMD-ONLY0:       if.end3820:
// SIMD-ONLY0-NEXT:    [[TMP1974:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1975:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3821:%.*]] = icmp ugt i64 [[TMP1974]], [[TMP1975]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3821]], label [[COND_TRUE3823:%.*]], label [[COND_FALSE3824:%.*]]
// SIMD-ONLY0:       cond.true3823:
// SIMD-ONLY0-NEXT:    [[TMP1976:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3825:%.*]]
// SIMD-ONLY0:       cond.false3824:
// SIMD-ONLY0-NEXT:    [[TMP1977:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3825]]
// SIMD-ONLY0:       cond.end3825:
// SIMD-ONLY0-NEXT:    [[COND3826:%.*]] = phi i64 [ [[TMP1976]], [[COND_TRUE3823]] ], [ [[TMP1977]], [[COND_FALSE3824]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3826]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1978:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1979:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3827:%.*]] = icmp ult i64 [[TMP1978]], [[TMP1979]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3827]], label [[COND_TRUE3829:%.*]], label [[COND_FALSE3830:%.*]]
// SIMD-ONLY0:       cond.true3829:
// SIMD-ONLY0-NEXT:    [[TMP1980:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3831:%.*]]
// SIMD-ONLY0:       cond.false3830:
// SIMD-ONLY0-NEXT:    [[TMP1981:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3831]]
// SIMD-ONLY0:       cond.end3831:
// SIMD-ONLY0-NEXT:    [[COND3832:%.*]] = phi i64 [ [[TMP1980]], [[COND_TRUE3829]] ], [ [[TMP1981]], [[COND_FALSE3830]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3832]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1982:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1983:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3833:%.*]] = icmp ugt i64 [[TMP1982]], [[TMP1983]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3833]], label [[COND_TRUE3835:%.*]], label [[COND_FALSE3836:%.*]]
// SIMD-ONLY0:       cond.true3835:
// SIMD-ONLY0-NEXT:    [[TMP1984:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3837:%.*]]
// SIMD-ONLY0:       cond.false3836:
// SIMD-ONLY0-NEXT:    [[TMP1985:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3837]]
// SIMD-ONLY0:       cond.end3837:
// SIMD-ONLY0-NEXT:    [[COND3838:%.*]] = phi i64 [ [[TMP1984]], [[COND_TRUE3835]] ], [ [[TMP1985]], [[COND_FALSE3836]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3838]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1986:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1987:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3839:%.*]] = icmp ult i64 [[TMP1986]], [[TMP1987]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3839]], label [[COND_TRUE3841:%.*]], label [[COND_FALSE3842:%.*]]
// SIMD-ONLY0:       cond.true3841:
// SIMD-ONLY0-NEXT:    [[TMP1988:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3843:%.*]]
// SIMD-ONLY0:       cond.false3842:
// SIMD-ONLY0-NEXT:    [[TMP1989:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3843]]
// SIMD-ONLY0:       cond.end3843:
// SIMD-ONLY0-NEXT:    [[COND3844:%.*]] = phi i64 [ [[TMP1988]], [[COND_TRUE3841]] ], [ [[TMP1989]], [[COND_FALSE3842]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3844]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1990:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1991:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3845:%.*]] = icmp ugt i64 [[TMP1990]], [[TMP1991]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3845]], label [[IF_THEN3847:%.*]], label [[IF_END3848:%.*]]
// SIMD-ONLY0:       if.then3847:
// SIMD-ONLY0-NEXT:    [[TMP1992:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1992]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3848]]
// SIMD-ONLY0:       if.end3848:
// SIMD-ONLY0-NEXT:    [[TMP1993:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1994:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3849:%.*]] = icmp ult i64 [[TMP1993]], [[TMP1994]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3849]], label [[IF_THEN3851:%.*]], label [[IF_END3852:%.*]]
// SIMD-ONLY0:       if.then3851:
// SIMD-ONLY0-NEXT:    [[TMP1995:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1995]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3852]]
// SIMD-ONLY0:       if.end3852:
// SIMD-ONLY0-NEXT:    [[TMP1996:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1997:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3853:%.*]] = icmp ugt i64 [[TMP1996]], [[TMP1997]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3853]], label [[IF_THEN3855:%.*]], label [[IF_END3856:%.*]]
// SIMD-ONLY0:       if.then3855:
// SIMD-ONLY0-NEXT:    [[TMP1998:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP1998]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3856]]
// SIMD-ONLY0:       if.end3856:
// SIMD-ONLY0-NEXT:    [[TMP1999:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2000:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3857:%.*]] = icmp ult i64 [[TMP1999]], [[TMP2000]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3857]], label [[IF_THEN3859:%.*]], label [[IF_END3860:%.*]]
// SIMD-ONLY0:       if.then3859:
// SIMD-ONLY0-NEXT:    [[TMP2001:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2001]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3860]]
// SIMD-ONLY0:       if.end3860:
// SIMD-ONLY0-NEXT:    [[TMP2002:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2003:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3861:%.*]] = icmp eq i64 [[TMP2002]], [[TMP2003]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3861]], label [[COND_TRUE3863:%.*]], label [[COND_FALSE3864:%.*]]
// SIMD-ONLY0:       cond.true3863:
// SIMD-ONLY0-NEXT:    [[TMP2004:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3865:%.*]]
// SIMD-ONLY0:       cond.false3864:
// SIMD-ONLY0-NEXT:    [[TMP2005:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3865]]
// SIMD-ONLY0:       cond.end3865:
// SIMD-ONLY0-NEXT:    [[COND3866:%.*]] = phi i64 [ [[TMP2004]], [[COND_TRUE3863]] ], [ [[TMP2005]], [[COND_FALSE3864]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3866]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2006:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2007:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3867:%.*]] = icmp eq i64 [[TMP2006]], [[TMP2007]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3867]], label [[COND_TRUE3869:%.*]], label [[COND_FALSE3870:%.*]]
// SIMD-ONLY0:       cond.true3869:
// SIMD-ONLY0-NEXT:    [[TMP2008:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3871:%.*]]
// SIMD-ONLY0:       cond.false3870:
// SIMD-ONLY0-NEXT:    [[TMP2009:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3871]]
// SIMD-ONLY0:       cond.end3871:
// SIMD-ONLY0-NEXT:    [[COND3872:%.*]] = phi i64 [ [[TMP2008]], [[COND_TRUE3869]] ], [ [[TMP2009]], [[COND_FALSE3870]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3872]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2010:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2011:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3873:%.*]] = icmp eq i64 [[TMP2010]], [[TMP2011]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3873]], label [[IF_THEN3875:%.*]], label [[IF_END3876:%.*]]
// SIMD-ONLY0:       if.then3875:
// SIMD-ONLY0-NEXT:    [[TMP2012:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2012]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3876]]
// SIMD-ONLY0:       if.end3876:
// SIMD-ONLY0-NEXT:    [[TMP2013:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2014:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3877:%.*]] = icmp eq i64 [[TMP2013]], [[TMP2014]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3877]], label [[IF_THEN3879:%.*]], label [[IF_END3880:%.*]]
// SIMD-ONLY0:       if.then3879:
// SIMD-ONLY0-NEXT:    [[TMP2015:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2015]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3880]]
// SIMD-ONLY0:       if.end3880:
// SIMD-ONLY0-NEXT:    [[TMP2016:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2017:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3881:%.*]] = icmp sgt i64 [[TMP2016]], [[TMP2017]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3881]], label [[COND_TRUE3883:%.*]], label [[COND_FALSE3884:%.*]]
// SIMD-ONLY0:       cond.true3883:
// SIMD-ONLY0-NEXT:    [[TMP2018:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3885:%.*]]
// SIMD-ONLY0:       cond.false3884:
// SIMD-ONLY0-NEXT:    [[TMP2019:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3885]]
// SIMD-ONLY0:       cond.end3885:
// SIMD-ONLY0-NEXT:    [[COND3886:%.*]] = phi i64 [ [[TMP2018]], [[COND_TRUE3883]] ], [ [[TMP2019]], [[COND_FALSE3884]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3886]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2020:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2021:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3887:%.*]] = icmp slt i64 [[TMP2020]], [[TMP2021]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3887]], label [[COND_TRUE3889:%.*]], label [[COND_FALSE3890:%.*]]
// SIMD-ONLY0:       cond.true3889:
// SIMD-ONLY0-NEXT:    [[TMP2022:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3891:%.*]]
// SIMD-ONLY0:       cond.false3890:
// SIMD-ONLY0-NEXT:    [[TMP2023:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3891]]
// SIMD-ONLY0:       cond.end3891:
// SIMD-ONLY0-NEXT:    [[COND3892:%.*]] = phi i64 [ [[TMP2022]], [[COND_TRUE3889]] ], [ [[TMP2023]], [[COND_FALSE3890]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3892]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2024:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2025:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3893:%.*]] = icmp sgt i64 [[TMP2024]], [[TMP2025]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3893]], label [[COND_TRUE3895:%.*]], label [[COND_FALSE3896:%.*]]
// SIMD-ONLY0:       cond.true3895:
// SIMD-ONLY0-NEXT:    [[TMP2026:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3897:%.*]]
// SIMD-ONLY0:       cond.false3896:
// SIMD-ONLY0-NEXT:    [[TMP2027:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3897]]
// SIMD-ONLY0:       cond.end3897:
// SIMD-ONLY0-NEXT:    [[COND3898:%.*]] = phi i64 [ [[TMP2026]], [[COND_TRUE3895]] ], [ [[TMP2027]], [[COND_FALSE3896]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3898]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2028:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2029:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3899:%.*]] = icmp slt i64 [[TMP2028]], [[TMP2029]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3899]], label [[COND_TRUE3901:%.*]], label [[COND_FALSE3902:%.*]]
// SIMD-ONLY0:       cond.true3901:
// SIMD-ONLY0-NEXT:    [[TMP2030:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3903:%.*]]
// SIMD-ONLY0:       cond.false3902:
// SIMD-ONLY0-NEXT:    [[TMP2031:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3903]]
// SIMD-ONLY0:       cond.end3903:
// SIMD-ONLY0-NEXT:    [[COND3904:%.*]] = phi i64 [ [[TMP2030]], [[COND_TRUE3901]] ], [ [[TMP2031]], [[COND_FALSE3902]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3904]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2032:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2033:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3905:%.*]] = icmp sgt i64 [[TMP2032]], [[TMP2033]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3905]], label [[IF_THEN3907:%.*]], label [[IF_END3908:%.*]]
// SIMD-ONLY0:       if.then3907:
// SIMD-ONLY0-NEXT:    [[TMP2034:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2034]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3908]]
// SIMD-ONLY0:       if.end3908:
// SIMD-ONLY0-NEXT:    [[TMP2035:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2036:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3909:%.*]] = icmp slt i64 [[TMP2035]], [[TMP2036]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3909]], label [[IF_THEN3911:%.*]], label [[IF_END3912:%.*]]
// SIMD-ONLY0:       if.then3911:
// SIMD-ONLY0-NEXT:    [[TMP2037:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2037]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3912]]
// SIMD-ONLY0:       if.end3912:
// SIMD-ONLY0-NEXT:    [[TMP2038:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2039:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3913:%.*]] = icmp sgt i64 [[TMP2038]], [[TMP2039]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3913]], label [[IF_THEN3915:%.*]], label [[IF_END3916:%.*]]
// SIMD-ONLY0:       if.then3915:
// SIMD-ONLY0-NEXT:    [[TMP2040:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2040]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3916]]
// SIMD-ONLY0:       if.end3916:
// SIMD-ONLY0-NEXT:    [[TMP2041:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2042:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3917:%.*]] = icmp slt i64 [[TMP2041]], [[TMP2042]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3917]], label [[IF_THEN3919:%.*]], label [[IF_END3920:%.*]]
// SIMD-ONLY0:       if.then3919:
// SIMD-ONLY0-NEXT:    [[TMP2043:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2043]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3920]]
// SIMD-ONLY0:       if.end3920:
// SIMD-ONLY0-NEXT:    [[TMP2044:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2045:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3921:%.*]] = icmp eq i64 [[TMP2044]], [[TMP2045]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3921]], label [[COND_TRUE3923:%.*]], label [[COND_FALSE3924:%.*]]
// SIMD-ONLY0:       cond.true3923:
// SIMD-ONLY0-NEXT:    [[TMP2046:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3925:%.*]]
// SIMD-ONLY0:       cond.false3924:
// SIMD-ONLY0-NEXT:    [[TMP2047:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3925]]
// SIMD-ONLY0:       cond.end3925:
// SIMD-ONLY0-NEXT:    [[COND3926:%.*]] = phi i64 [ [[TMP2046]], [[COND_TRUE3923]] ], [ [[TMP2047]], [[COND_FALSE3924]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3926]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2048:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2049:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3927:%.*]] = icmp eq i64 [[TMP2048]], [[TMP2049]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3927]], label [[COND_TRUE3929:%.*]], label [[COND_FALSE3930:%.*]]
// SIMD-ONLY0:       cond.true3929:
// SIMD-ONLY0-NEXT:    [[TMP2050:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3931:%.*]]
// SIMD-ONLY0:       cond.false3930:
// SIMD-ONLY0-NEXT:    [[TMP2051:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3931]]
// SIMD-ONLY0:       cond.end3931:
// SIMD-ONLY0-NEXT:    [[COND3932:%.*]] = phi i64 [ [[TMP2050]], [[COND_TRUE3929]] ], [ [[TMP2051]], [[COND_FALSE3930]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3932]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2052:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2053:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3933:%.*]] = icmp eq i64 [[TMP2052]], [[TMP2053]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3933]], label [[IF_THEN3935:%.*]], label [[IF_END3936:%.*]]
// SIMD-ONLY0:       if.then3935:
// SIMD-ONLY0-NEXT:    [[TMP2054:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2054]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3936]]
// SIMD-ONLY0:       if.end3936:
// SIMD-ONLY0-NEXT:    [[TMP2055:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2056:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3937:%.*]] = icmp eq i64 [[TMP2055]], [[TMP2056]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3937]], label [[IF_THEN3939:%.*]], label [[IF_END3940:%.*]]
// SIMD-ONLY0:       if.then3939:
// SIMD-ONLY0-NEXT:    [[TMP2057:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2057]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3940]]
// SIMD-ONLY0:       if.end3940:
// SIMD-ONLY0-NEXT:    [[TMP2058:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2059:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3941:%.*]] = icmp ugt i64 [[TMP2058]], [[TMP2059]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3941]], label [[COND_TRUE3943:%.*]], label [[COND_FALSE3944:%.*]]
// SIMD-ONLY0:       cond.true3943:
// SIMD-ONLY0-NEXT:    [[TMP2060:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3945:%.*]]
// SIMD-ONLY0:       cond.false3944:
// SIMD-ONLY0-NEXT:    [[TMP2061:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3945]]
// SIMD-ONLY0:       cond.end3945:
// SIMD-ONLY0-NEXT:    [[COND3946:%.*]] = phi i64 [ [[TMP2060]], [[COND_TRUE3943]] ], [ [[TMP2061]], [[COND_FALSE3944]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3946]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2062:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2063:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3947:%.*]] = icmp ult i64 [[TMP2062]], [[TMP2063]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3947]], label [[COND_TRUE3949:%.*]], label [[COND_FALSE3950:%.*]]
// SIMD-ONLY0:       cond.true3949:
// SIMD-ONLY0-NEXT:    [[TMP2064:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3951:%.*]]
// SIMD-ONLY0:       cond.false3950:
// SIMD-ONLY0-NEXT:    [[TMP2065:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3951]]
// SIMD-ONLY0:       cond.end3951:
// SIMD-ONLY0-NEXT:    [[COND3952:%.*]] = phi i64 [ [[TMP2064]], [[COND_TRUE3949]] ], [ [[TMP2065]], [[COND_FALSE3950]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3952]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2066:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2067:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3953:%.*]] = icmp ugt i64 [[TMP2066]], [[TMP2067]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3953]], label [[COND_TRUE3955:%.*]], label [[COND_FALSE3956:%.*]]
// SIMD-ONLY0:       cond.true3955:
// SIMD-ONLY0-NEXT:    [[TMP2068:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3957:%.*]]
// SIMD-ONLY0:       cond.false3956:
// SIMD-ONLY0-NEXT:    [[TMP2069:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3957]]
// SIMD-ONLY0:       cond.end3957:
// SIMD-ONLY0-NEXT:    [[COND3958:%.*]] = phi i64 [ [[TMP2068]], [[COND_TRUE3955]] ], [ [[TMP2069]], [[COND_FALSE3956]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3958]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2070:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2071:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3959:%.*]] = icmp ult i64 [[TMP2070]], [[TMP2071]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3959]], label [[COND_TRUE3961:%.*]], label [[COND_FALSE3962:%.*]]
// SIMD-ONLY0:       cond.true3961:
// SIMD-ONLY0-NEXT:    [[TMP2072:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3963:%.*]]
// SIMD-ONLY0:       cond.false3962:
// SIMD-ONLY0-NEXT:    [[TMP2073:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3963]]
// SIMD-ONLY0:       cond.end3963:
// SIMD-ONLY0-NEXT:    [[COND3964:%.*]] = phi i64 [ [[TMP2072]], [[COND_TRUE3961]] ], [ [[TMP2073]], [[COND_FALSE3962]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3964]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2074:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2075:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3965:%.*]] = icmp ugt i64 [[TMP2074]], [[TMP2075]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3965]], label [[IF_THEN3967:%.*]], label [[IF_END3968:%.*]]
// SIMD-ONLY0:       if.then3967:
// SIMD-ONLY0-NEXT:    [[TMP2076:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2076]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3968]]
// SIMD-ONLY0:       if.end3968:
// SIMD-ONLY0-NEXT:    [[TMP2077:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2078:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3969:%.*]] = icmp ult i64 [[TMP2077]], [[TMP2078]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3969]], label [[IF_THEN3971:%.*]], label [[IF_END3972:%.*]]
// SIMD-ONLY0:       if.then3971:
// SIMD-ONLY0-NEXT:    [[TMP2079:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2079]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3972]]
// SIMD-ONLY0:       if.end3972:
// SIMD-ONLY0-NEXT:    [[TMP2080:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2081:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3973:%.*]] = icmp ugt i64 [[TMP2080]], [[TMP2081]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3973]], label [[IF_THEN3975:%.*]], label [[IF_END3976:%.*]]
// SIMD-ONLY0:       if.then3975:
// SIMD-ONLY0-NEXT:    [[TMP2082:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2082]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3976]]
// SIMD-ONLY0:       if.end3976:
// SIMD-ONLY0-NEXT:    [[TMP2083:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2084:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3977:%.*]] = icmp ult i64 [[TMP2083]], [[TMP2084]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3977]], label [[IF_THEN3979:%.*]], label [[IF_END3980:%.*]]
// SIMD-ONLY0:       if.then3979:
// SIMD-ONLY0-NEXT:    [[TMP2085:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2085]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3980]]
// SIMD-ONLY0:       if.end3980:
// SIMD-ONLY0-NEXT:    [[TMP2086:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2087:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3981:%.*]] = icmp eq i64 [[TMP2086]], [[TMP2087]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3981]], label [[COND_TRUE3983:%.*]], label [[COND_FALSE3984:%.*]]
// SIMD-ONLY0:       cond.true3983:
// SIMD-ONLY0-NEXT:    [[TMP2088:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3985:%.*]]
// SIMD-ONLY0:       cond.false3984:
// SIMD-ONLY0-NEXT:    [[TMP2089:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3985]]
// SIMD-ONLY0:       cond.end3985:
// SIMD-ONLY0-NEXT:    [[COND3986:%.*]] = phi i64 [ [[TMP2088]], [[COND_TRUE3983]] ], [ [[TMP2089]], [[COND_FALSE3984]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3986]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2090:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2091:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3987:%.*]] = icmp eq i64 [[TMP2090]], [[TMP2091]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3987]], label [[COND_TRUE3989:%.*]], label [[COND_FALSE3990:%.*]]
// SIMD-ONLY0:       cond.true3989:
// SIMD-ONLY0-NEXT:    [[TMP2092:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3991:%.*]]
// SIMD-ONLY0:       cond.false3990:
// SIMD-ONLY0-NEXT:    [[TMP2093:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END3991]]
// SIMD-ONLY0:       cond.end3991:
// SIMD-ONLY0-NEXT:    [[COND3992:%.*]] = phi i64 [ [[TMP2092]], [[COND_TRUE3989]] ], [ [[TMP2093]], [[COND_FALSE3990]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND3992]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2094:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2095:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3993:%.*]] = icmp eq i64 [[TMP2094]], [[TMP2095]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3993]], label [[IF_THEN3995:%.*]], label [[IF_END3996:%.*]]
// SIMD-ONLY0:       if.then3995:
// SIMD-ONLY0-NEXT:    [[TMP2096:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2096]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3996]]
// SIMD-ONLY0:       if.end3996:
// SIMD-ONLY0-NEXT:    [[TMP2097:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2098:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3997:%.*]] = icmp eq i64 [[TMP2097]], [[TMP2098]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3997]], label [[IF_THEN3999:%.*]], label [[IF_END4000:%.*]]
// SIMD-ONLY0:       if.then3999:
// SIMD-ONLY0-NEXT:    [[TMP2099:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2099]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4000]]
// SIMD-ONLY0:       if.end4000:
// SIMD-ONLY0-NEXT:    [[TMP2100:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2101:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4001:%.*]] = icmp sgt i64 [[TMP2100]], [[TMP2101]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4001]], label [[COND_TRUE4003:%.*]], label [[COND_FALSE4004:%.*]]
// SIMD-ONLY0:       cond.true4003:
// SIMD-ONLY0-NEXT:    [[TMP2102:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4005:%.*]]
// SIMD-ONLY0:       cond.false4004:
// SIMD-ONLY0-NEXT:    [[TMP2103:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4005]]
// SIMD-ONLY0:       cond.end4005:
// SIMD-ONLY0-NEXT:    [[COND4006:%.*]] = phi i64 [ [[TMP2102]], [[COND_TRUE4003]] ], [ [[TMP2103]], [[COND_FALSE4004]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4006]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2104:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2105:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4007:%.*]] = icmp slt i64 [[TMP2104]], [[TMP2105]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4007]], label [[COND_TRUE4009:%.*]], label [[COND_FALSE4010:%.*]]
// SIMD-ONLY0:       cond.true4009:
// SIMD-ONLY0-NEXT:    [[TMP2106:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4011:%.*]]
// SIMD-ONLY0:       cond.false4010:
// SIMD-ONLY0-NEXT:    [[TMP2107:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4011]]
// SIMD-ONLY0:       cond.end4011:
// SIMD-ONLY0-NEXT:    [[COND4012:%.*]] = phi i64 [ [[TMP2106]], [[COND_TRUE4009]] ], [ [[TMP2107]], [[COND_FALSE4010]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4012]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2108:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2109:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4013:%.*]] = icmp sgt i64 [[TMP2108]], [[TMP2109]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4013]], label [[COND_TRUE4015:%.*]], label [[COND_FALSE4016:%.*]]
// SIMD-ONLY0:       cond.true4015:
// SIMD-ONLY0-NEXT:    [[TMP2110:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4017:%.*]]
// SIMD-ONLY0:       cond.false4016:
// SIMD-ONLY0-NEXT:    [[TMP2111:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4017]]
// SIMD-ONLY0:       cond.end4017:
// SIMD-ONLY0-NEXT:    [[COND4018:%.*]] = phi i64 [ [[TMP2110]], [[COND_TRUE4015]] ], [ [[TMP2111]], [[COND_FALSE4016]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4018]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2112:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2113:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4019:%.*]] = icmp slt i64 [[TMP2112]], [[TMP2113]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4019]], label [[COND_TRUE4021:%.*]], label [[COND_FALSE4022:%.*]]
// SIMD-ONLY0:       cond.true4021:
// SIMD-ONLY0-NEXT:    [[TMP2114:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4023:%.*]]
// SIMD-ONLY0:       cond.false4022:
// SIMD-ONLY0-NEXT:    [[TMP2115:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4023]]
// SIMD-ONLY0:       cond.end4023:
// SIMD-ONLY0-NEXT:    [[COND4024:%.*]] = phi i64 [ [[TMP2114]], [[COND_TRUE4021]] ], [ [[TMP2115]], [[COND_FALSE4022]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4024]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2116:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2117:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4025:%.*]] = icmp sgt i64 [[TMP2116]], [[TMP2117]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4025]], label [[IF_THEN4027:%.*]], label [[IF_END4028:%.*]]
// SIMD-ONLY0:       if.then4027:
// SIMD-ONLY0-NEXT:    [[TMP2118:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2118]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4028]]
// SIMD-ONLY0:       if.end4028:
// SIMD-ONLY0-NEXT:    [[TMP2119:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2120:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4029:%.*]] = icmp slt i64 [[TMP2119]], [[TMP2120]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4029]], label [[IF_THEN4031:%.*]], label [[IF_END4032:%.*]]
// SIMD-ONLY0:       if.then4031:
// SIMD-ONLY0-NEXT:    [[TMP2121:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2121]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4032]]
// SIMD-ONLY0:       if.end4032:
// SIMD-ONLY0-NEXT:    [[TMP2122:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2123:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4033:%.*]] = icmp sgt i64 [[TMP2122]], [[TMP2123]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4033]], label [[IF_THEN4035:%.*]], label [[IF_END4036:%.*]]
// SIMD-ONLY0:       if.then4035:
// SIMD-ONLY0-NEXT:    [[TMP2124:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2124]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4036]]
// SIMD-ONLY0:       if.end4036:
// SIMD-ONLY0-NEXT:    [[TMP2125:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2126:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4037:%.*]] = icmp slt i64 [[TMP2125]], [[TMP2126]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4037]], label [[IF_THEN4039:%.*]], label [[IF_END4040:%.*]]
// SIMD-ONLY0:       if.then4039:
// SIMD-ONLY0-NEXT:    [[TMP2127:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2127]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4040]]
// SIMD-ONLY0:       if.end4040:
// SIMD-ONLY0-NEXT:    [[TMP2128:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2129:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4041:%.*]] = icmp eq i64 [[TMP2128]], [[TMP2129]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4041]], label [[COND_TRUE4043:%.*]], label [[COND_FALSE4044:%.*]]
// SIMD-ONLY0:       cond.true4043:
// SIMD-ONLY0-NEXT:    [[TMP2130:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4045:%.*]]
// SIMD-ONLY0:       cond.false4044:
// SIMD-ONLY0-NEXT:    [[TMP2131:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4045]]
// SIMD-ONLY0:       cond.end4045:
// SIMD-ONLY0-NEXT:    [[COND4046:%.*]] = phi i64 [ [[TMP2130]], [[COND_TRUE4043]] ], [ [[TMP2131]], [[COND_FALSE4044]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4046]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2132:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2133:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4047:%.*]] = icmp eq i64 [[TMP2132]], [[TMP2133]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4047]], label [[COND_TRUE4049:%.*]], label [[COND_FALSE4050:%.*]]
// SIMD-ONLY0:       cond.true4049:
// SIMD-ONLY0-NEXT:    [[TMP2134:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4051:%.*]]
// SIMD-ONLY0:       cond.false4050:
// SIMD-ONLY0-NEXT:    [[TMP2135:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4051]]
// SIMD-ONLY0:       cond.end4051:
// SIMD-ONLY0-NEXT:    [[COND4052:%.*]] = phi i64 [ [[TMP2134]], [[COND_TRUE4049]] ], [ [[TMP2135]], [[COND_FALSE4050]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4052]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2136:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2137:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4053:%.*]] = icmp eq i64 [[TMP2136]], [[TMP2137]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4053]], label [[IF_THEN4055:%.*]], label [[IF_END4056:%.*]]
// SIMD-ONLY0:       if.then4055:
// SIMD-ONLY0-NEXT:    [[TMP2138:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2138]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4056]]
// SIMD-ONLY0:       if.end4056:
// SIMD-ONLY0-NEXT:    [[TMP2139:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2140:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4057:%.*]] = icmp eq i64 [[TMP2139]], [[TMP2140]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4057]], label [[IF_THEN4059:%.*]], label [[IF_END4060:%.*]]
// SIMD-ONLY0:       if.then4059:
// SIMD-ONLY0-NEXT:    [[TMP2141:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2141]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4060]]
// SIMD-ONLY0:       if.end4060:
// SIMD-ONLY0-NEXT:    [[TMP2142:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2143:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4061:%.*]] = icmp ugt i64 [[TMP2142]], [[TMP2143]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4061]], label [[COND_TRUE4063:%.*]], label [[COND_FALSE4064:%.*]]
// SIMD-ONLY0:       cond.true4063:
// SIMD-ONLY0-NEXT:    [[TMP2144:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4065:%.*]]
// SIMD-ONLY0:       cond.false4064:
// SIMD-ONLY0-NEXT:    [[TMP2145:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4065]]
// SIMD-ONLY0:       cond.end4065:
// SIMD-ONLY0-NEXT:    [[COND4066:%.*]] = phi i64 [ [[TMP2144]], [[COND_TRUE4063]] ], [ [[TMP2145]], [[COND_FALSE4064]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4066]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2146:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2147:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4067:%.*]] = icmp ult i64 [[TMP2146]], [[TMP2147]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4067]], label [[COND_TRUE4069:%.*]], label [[COND_FALSE4070:%.*]]
// SIMD-ONLY0:       cond.true4069:
// SIMD-ONLY0-NEXT:    [[TMP2148:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4071:%.*]]
// SIMD-ONLY0:       cond.false4070:
// SIMD-ONLY0-NEXT:    [[TMP2149:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4071]]
// SIMD-ONLY0:       cond.end4071:
// SIMD-ONLY0-NEXT:    [[COND4072:%.*]] = phi i64 [ [[TMP2148]], [[COND_TRUE4069]] ], [ [[TMP2149]], [[COND_FALSE4070]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4072]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2150:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2151:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4073:%.*]] = icmp ugt i64 [[TMP2150]], [[TMP2151]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4073]], label [[COND_TRUE4075:%.*]], label [[COND_FALSE4076:%.*]]
// SIMD-ONLY0:       cond.true4075:
// SIMD-ONLY0-NEXT:    [[TMP2152:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4077:%.*]]
// SIMD-ONLY0:       cond.false4076:
// SIMD-ONLY0-NEXT:    [[TMP2153:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4077]]
// SIMD-ONLY0:       cond.end4077:
// SIMD-ONLY0-NEXT:    [[COND4078:%.*]] = phi i64 [ [[TMP2152]], [[COND_TRUE4075]] ], [ [[TMP2153]], [[COND_FALSE4076]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4078]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2154:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2155:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4079:%.*]] = icmp ult i64 [[TMP2154]], [[TMP2155]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4079]], label [[COND_TRUE4081:%.*]], label [[COND_FALSE4082:%.*]]
// SIMD-ONLY0:       cond.true4081:
// SIMD-ONLY0-NEXT:    [[TMP2156:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4083:%.*]]
// SIMD-ONLY0:       cond.false4082:
// SIMD-ONLY0-NEXT:    [[TMP2157:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4083]]
// SIMD-ONLY0:       cond.end4083:
// SIMD-ONLY0-NEXT:    [[COND4084:%.*]] = phi i64 [ [[TMP2156]], [[COND_TRUE4081]] ], [ [[TMP2157]], [[COND_FALSE4082]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4084]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2158:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2159:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4085:%.*]] = icmp ugt i64 [[TMP2158]], [[TMP2159]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4085]], label [[IF_THEN4087:%.*]], label [[IF_END4088:%.*]]
// SIMD-ONLY0:       if.then4087:
// SIMD-ONLY0-NEXT:    [[TMP2160:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2160]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4088]]
// SIMD-ONLY0:       if.end4088:
// SIMD-ONLY0-NEXT:    [[TMP2161:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2162:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4089:%.*]] = icmp ult i64 [[TMP2161]], [[TMP2162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4089]], label [[IF_THEN4091:%.*]], label [[IF_END4092:%.*]]
// SIMD-ONLY0:       if.then4091:
// SIMD-ONLY0-NEXT:    [[TMP2163:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2163]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4092]]
// SIMD-ONLY0:       if.end4092:
// SIMD-ONLY0-NEXT:    [[TMP2164:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2165:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4093:%.*]] = icmp ugt i64 [[TMP2164]], [[TMP2165]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4093]], label [[IF_THEN4095:%.*]], label [[IF_END4096:%.*]]
// SIMD-ONLY0:       if.then4095:
// SIMD-ONLY0-NEXT:    [[TMP2166:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2166]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4096]]
// SIMD-ONLY0:       if.end4096:
// SIMD-ONLY0-NEXT:    [[TMP2167:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2168:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4097:%.*]] = icmp ult i64 [[TMP2167]], [[TMP2168]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4097]], label [[IF_THEN4099:%.*]], label [[IF_END4100:%.*]]
// SIMD-ONLY0:       if.then4099:
// SIMD-ONLY0-NEXT:    [[TMP2169:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2169]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4100]]
// SIMD-ONLY0:       if.end4100:
// SIMD-ONLY0-NEXT:    [[TMP2170:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2171:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4101:%.*]] = icmp eq i64 [[TMP2170]], [[TMP2171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4101]], label [[COND_TRUE4103:%.*]], label [[COND_FALSE4104:%.*]]
// SIMD-ONLY0:       cond.true4103:
// SIMD-ONLY0-NEXT:    [[TMP2172:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4105:%.*]]
// SIMD-ONLY0:       cond.false4104:
// SIMD-ONLY0-NEXT:    [[TMP2173:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4105]]
// SIMD-ONLY0:       cond.end4105:
// SIMD-ONLY0-NEXT:    [[COND4106:%.*]] = phi i64 [ [[TMP2172]], [[COND_TRUE4103]] ], [ [[TMP2173]], [[COND_FALSE4104]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4106]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2174:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2175:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4107:%.*]] = icmp eq i64 [[TMP2174]], [[TMP2175]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4107]], label [[COND_TRUE4109:%.*]], label [[COND_FALSE4110:%.*]]
// SIMD-ONLY0:       cond.true4109:
// SIMD-ONLY0-NEXT:    [[TMP2176:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4111:%.*]]
// SIMD-ONLY0:       cond.false4110:
// SIMD-ONLY0-NEXT:    [[TMP2177:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4111]]
// SIMD-ONLY0:       cond.end4111:
// SIMD-ONLY0-NEXT:    [[COND4112:%.*]] = phi i64 [ [[TMP2176]], [[COND_TRUE4109]] ], [ [[TMP2177]], [[COND_FALSE4110]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4112]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2178:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2179:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4113:%.*]] = icmp eq i64 [[TMP2178]], [[TMP2179]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4113]], label [[IF_THEN4115:%.*]], label [[IF_END4116:%.*]]
// SIMD-ONLY0:       if.then4115:
// SIMD-ONLY0-NEXT:    [[TMP2180:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2180]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4116]]
// SIMD-ONLY0:       if.end4116:
// SIMD-ONLY0-NEXT:    [[TMP2181:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2182:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4117:%.*]] = icmp eq i64 [[TMP2181]], [[TMP2182]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4117]], label [[IF_THEN4119:%.*]], label [[IF_END4120:%.*]]
// SIMD-ONLY0:       if.then4119:
// SIMD-ONLY0-NEXT:    [[TMP2183:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2183]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4120]]
// SIMD-ONLY0:       if.end4120:
// SIMD-ONLY0-NEXT:    [[TMP2184:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2185:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4121:%.*]] = icmp sgt i64 [[TMP2184]], [[TMP2185]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4121]], label [[COND_TRUE4123:%.*]], label [[COND_FALSE4124:%.*]]
// SIMD-ONLY0:       cond.true4123:
// SIMD-ONLY0-NEXT:    [[TMP2186:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4125:%.*]]
// SIMD-ONLY0:       cond.false4124:
// SIMD-ONLY0-NEXT:    [[TMP2187:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4125]]
// SIMD-ONLY0:       cond.end4125:
// SIMD-ONLY0-NEXT:    [[COND4126:%.*]] = phi i64 [ [[TMP2186]], [[COND_TRUE4123]] ], [ [[TMP2187]], [[COND_FALSE4124]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4126]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2188:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2189:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4127:%.*]] = icmp slt i64 [[TMP2188]], [[TMP2189]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4127]], label [[COND_TRUE4129:%.*]], label [[COND_FALSE4130:%.*]]
// SIMD-ONLY0:       cond.true4129:
// SIMD-ONLY0-NEXT:    [[TMP2190:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4131:%.*]]
// SIMD-ONLY0:       cond.false4130:
// SIMD-ONLY0-NEXT:    [[TMP2191:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4131]]
// SIMD-ONLY0:       cond.end4131:
// SIMD-ONLY0-NEXT:    [[COND4132:%.*]] = phi i64 [ [[TMP2190]], [[COND_TRUE4129]] ], [ [[TMP2191]], [[COND_FALSE4130]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4132]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2192:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2193:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4133:%.*]] = icmp sgt i64 [[TMP2192]], [[TMP2193]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4133]], label [[COND_TRUE4135:%.*]], label [[COND_FALSE4136:%.*]]
// SIMD-ONLY0:       cond.true4135:
// SIMD-ONLY0-NEXT:    [[TMP2194:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4137:%.*]]
// SIMD-ONLY0:       cond.false4136:
// SIMD-ONLY0-NEXT:    [[TMP2195:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4137]]
// SIMD-ONLY0:       cond.end4137:
// SIMD-ONLY0-NEXT:    [[COND4138:%.*]] = phi i64 [ [[TMP2194]], [[COND_TRUE4135]] ], [ [[TMP2195]], [[COND_FALSE4136]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4138]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2196:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2197:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4139:%.*]] = icmp slt i64 [[TMP2196]], [[TMP2197]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4139]], label [[COND_TRUE4141:%.*]], label [[COND_FALSE4142:%.*]]
// SIMD-ONLY0:       cond.true4141:
// SIMD-ONLY0-NEXT:    [[TMP2198:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4143:%.*]]
// SIMD-ONLY0:       cond.false4142:
// SIMD-ONLY0-NEXT:    [[TMP2199:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4143]]
// SIMD-ONLY0:       cond.end4143:
// SIMD-ONLY0-NEXT:    [[COND4144:%.*]] = phi i64 [ [[TMP2198]], [[COND_TRUE4141]] ], [ [[TMP2199]], [[COND_FALSE4142]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4144]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2200:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2201:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4145:%.*]] = icmp sgt i64 [[TMP2200]], [[TMP2201]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4145]], label [[IF_THEN4147:%.*]], label [[IF_END4148:%.*]]
// SIMD-ONLY0:       if.then4147:
// SIMD-ONLY0-NEXT:    [[TMP2202:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2202]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4148]]
// SIMD-ONLY0:       if.end4148:
// SIMD-ONLY0-NEXT:    [[TMP2203:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2204:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4149:%.*]] = icmp slt i64 [[TMP2203]], [[TMP2204]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4149]], label [[IF_THEN4151:%.*]], label [[IF_END4152:%.*]]
// SIMD-ONLY0:       if.then4151:
// SIMD-ONLY0-NEXT:    [[TMP2205:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2205]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4152]]
// SIMD-ONLY0:       if.end4152:
// SIMD-ONLY0-NEXT:    [[TMP2206:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2207:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4153:%.*]] = icmp sgt i64 [[TMP2206]], [[TMP2207]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4153]], label [[IF_THEN4155:%.*]], label [[IF_END4156:%.*]]
// SIMD-ONLY0:       if.then4155:
// SIMD-ONLY0-NEXT:    [[TMP2208:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2208]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4156]]
// SIMD-ONLY0:       if.end4156:
// SIMD-ONLY0-NEXT:    [[TMP2209:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2210:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4157:%.*]] = icmp slt i64 [[TMP2209]], [[TMP2210]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4157]], label [[IF_THEN4159:%.*]], label [[IF_END4160:%.*]]
// SIMD-ONLY0:       if.then4159:
// SIMD-ONLY0-NEXT:    [[TMP2211:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2211]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4160]]
// SIMD-ONLY0:       if.end4160:
// SIMD-ONLY0-NEXT:    [[TMP2212:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2213:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4161:%.*]] = icmp eq i64 [[TMP2212]], [[TMP2213]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4161]], label [[COND_TRUE4163:%.*]], label [[COND_FALSE4164:%.*]]
// SIMD-ONLY0:       cond.true4163:
// SIMD-ONLY0-NEXT:    [[TMP2214:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4165:%.*]]
// SIMD-ONLY0:       cond.false4164:
// SIMD-ONLY0-NEXT:    [[TMP2215:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4165]]
// SIMD-ONLY0:       cond.end4165:
// SIMD-ONLY0-NEXT:    [[COND4166:%.*]] = phi i64 [ [[TMP2214]], [[COND_TRUE4163]] ], [ [[TMP2215]], [[COND_FALSE4164]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4166]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2216:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2217:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4167:%.*]] = icmp eq i64 [[TMP2216]], [[TMP2217]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4167]], label [[COND_TRUE4169:%.*]], label [[COND_FALSE4170:%.*]]
// SIMD-ONLY0:       cond.true4169:
// SIMD-ONLY0-NEXT:    [[TMP2218:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4171:%.*]]
// SIMD-ONLY0:       cond.false4170:
// SIMD-ONLY0-NEXT:    [[TMP2219:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4171]]
// SIMD-ONLY0:       cond.end4171:
// SIMD-ONLY0-NEXT:    [[COND4172:%.*]] = phi i64 [ [[TMP2218]], [[COND_TRUE4169]] ], [ [[TMP2219]], [[COND_FALSE4170]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4172]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2220:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2221:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4173:%.*]] = icmp eq i64 [[TMP2220]], [[TMP2221]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4173]], label [[IF_THEN4175:%.*]], label [[IF_END4176:%.*]]
// SIMD-ONLY0:       if.then4175:
// SIMD-ONLY0-NEXT:    [[TMP2222:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2222]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4176]]
// SIMD-ONLY0:       if.end4176:
// SIMD-ONLY0-NEXT:    [[TMP2223:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2224:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4177:%.*]] = icmp eq i64 [[TMP2223]], [[TMP2224]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4177]], label [[IF_THEN4179:%.*]], label [[IF_END4180:%.*]]
// SIMD-ONLY0:       if.then4179:
// SIMD-ONLY0-NEXT:    [[TMP2225:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2225]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4180]]
// SIMD-ONLY0:       if.end4180:
// SIMD-ONLY0-NEXT:    [[TMP2226:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2227:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4181:%.*]] = icmp ugt i64 [[TMP2226]], [[TMP2227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4181]], label [[COND_TRUE4183:%.*]], label [[COND_FALSE4184:%.*]]
// SIMD-ONLY0:       cond.true4183:
// SIMD-ONLY0-NEXT:    [[TMP2228:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4185:%.*]]
// SIMD-ONLY0:       cond.false4184:
// SIMD-ONLY0-NEXT:    [[TMP2229:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4185]]
// SIMD-ONLY0:       cond.end4185:
// SIMD-ONLY0-NEXT:    [[COND4186:%.*]] = phi i64 [ [[TMP2228]], [[COND_TRUE4183]] ], [ [[TMP2229]], [[COND_FALSE4184]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4186]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2230:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2231:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4187:%.*]] = icmp ult i64 [[TMP2230]], [[TMP2231]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4187]], label [[COND_TRUE4189:%.*]], label [[COND_FALSE4190:%.*]]
// SIMD-ONLY0:       cond.true4189:
// SIMD-ONLY0-NEXT:    [[TMP2232:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4191:%.*]]
// SIMD-ONLY0:       cond.false4190:
// SIMD-ONLY0-NEXT:    [[TMP2233:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4191]]
// SIMD-ONLY0:       cond.end4191:
// SIMD-ONLY0-NEXT:    [[COND4192:%.*]] = phi i64 [ [[TMP2232]], [[COND_TRUE4189]] ], [ [[TMP2233]], [[COND_FALSE4190]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4192]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2234:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2235:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4193:%.*]] = icmp ugt i64 [[TMP2234]], [[TMP2235]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4193]], label [[COND_TRUE4195:%.*]], label [[COND_FALSE4196:%.*]]
// SIMD-ONLY0:       cond.true4195:
// SIMD-ONLY0-NEXT:    [[TMP2236:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4197:%.*]]
// SIMD-ONLY0:       cond.false4196:
// SIMD-ONLY0-NEXT:    [[TMP2237:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4197]]
// SIMD-ONLY0:       cond.end4197:
// SIMD-ONLY0-NEXT:    [[COND4198:%.*]] = phi i64 [ [[TMP2236]], [[COND_TRUE4195]] ], [ [[TMP2237]], [[COND_FALSE4196]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4198]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2238:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2239:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4199:%.*]] = icmp ult i64 [[TMP2238]], [[TMP2239]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4199]], label [[COND_TRUE4201:%.*]], label [[COND_FALSE4202:%.*]]
// SIMD-ONLY0:       cond.true4201:
// SIMD-ONLY0-NEXT:    [[TMP2240:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4203:%.*]]
// SIMD-ONLY0:       cond.false4202:
// SIMD-ONLY0-NEXT:    [[TMP2241:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4203]]
// SIMD-ONLY0:       cond.end4203:
// SIMD-ONLY0-NEXT:    [[COND4204:%.*]] = phi i64 [ [[TMP2240]], [[COND_TRUE4201]] ], [ [[TMP2241]], [[COND_FALSE4202]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4204]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2242:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2243:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4205:%.*]] = icmp ugt i64 [[TMP2242]], [[TMP2243]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4205]], label [[IF_THEN4207:%.*]], label [[IF_END4208:%.*]]
// SIMD-ONLY0:       if.then4207:
// SIMD-ONLY0-NEXT:    [[TMP2244:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2244]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4208]]
// SIMD-ONLY0:       if.end4208:
// SIMD-ONLY0-NEXT:    [[TMP2245:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2246:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4209:%.*]] = icmp ult i64 [[TMP2245]], [[TMP2246]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4209]], label [[IF_THEN4211:%.*]], label [[IF_END4212:%.*]]
// SIMD-ONLY0:       if.then4211:
// SIMD-ONLY0-NEXT:    [[TMP2247:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2247]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4212]]
// SIMD-ONLY0:       if.end4212:
// SIMD-ONLY0-NEXT:    [[TMP2248:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2249:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4213:%.*]] = icmp ugt i64 [[TMP2248]], [[TMP2249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4213]], label [[IF_THEN4215:%.*]], label [[IF_END4216:%.*]]
// SIMD-ONLY0:       if.then4215:
// SIMD-ONLY0-NEXT:    [[TMP2250:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2250]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4216]]
// SIMD-ONLY0:       if.end4216:
// SIMD-ONLY0-NEXT:    [[TMP2251:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2252:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4217:%.*]] = icmp ult i64 [[TMP2251]], [[TMP2252]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4217]], label [[IF_THEN4219:%.*]], label [[IF_END4220:%.*]]
// SIMD-ONLY0:       if.then4219:
// SIMD-ONLY0-NEXT:    [[TMP2253:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2253]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4220]]
// SIMD-ONLY0:       if.end4220:
// SIMD-ONLY0-NEXT:    [[TMP2254:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2255:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4221:%.*]] = icmp eq i64 [[TMP2254]], [[TMP2255]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4221]], label [[COND_TRUE4223:%.*]], label [[COND_FALSE4224:%.*]]
// SIMD-ONLY0:       cond.true4223:
// SIMD-ONLY0-NEXT:    [[TMP2256:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4225:%.*]]
// SIMD-ONLY0:       cond.false4224:
// SIMD-ONLY0-NEXT:    [[TMP2257:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4225]]
// SIMD-ONLY0:       cond.end4225:
// SIMD-ONLY0-NEXT:    [[COND4226:%.*]] = phi i64 [ [[TMP2256]], [[COND_TRUE4223]] ], [ [[TMP2257]], [[COND_FALSE4224]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4226]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2258:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2259:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4227:%.*]] = icmp eq i64 [[TMP2258]], [[TMP2259]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4227]], label [[COND_TRUE4229:%.*]], label [[COND_FALSE4230:%.*]]
// SIMD-ONLY0:       cond.true4229:
// SIMD-ONLY0-NEXT:    [[TMP2260:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4231:%.*]]
// SIMD-ONLY0:       cond.false4230:
// SIMD-ONLY0-NEXT:    [[TMP2261:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4231]]
// SIMD-ONLY0:       cond.end4231:
// SIMD-ONLY0-NEXT:    [[COND4232:%.*]] = phi i64 [ [[TMP2260]], [[COND_TRUE4229]] ], [ [[TMP2261]], [[COND_FALSE4230]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4232]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2262:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2263:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4233:%.*]] = icmp eq i64 [[TMP2262]], [[TMP2263]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4233]], label [[IF_THEN4235:%.*]], label [[IF_END4236:%.*]]
// SIMD-ONLY0:       if.then4235:
// SIMD-ONLY0-NEXT:    [[TMP2264:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2264]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4236]]
// SIMD-ONLY0:       if.end4236:
// SIMD-ONLY0-NEXT:    [[TMP2265:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2266:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4237:%.*]] = icmp eq i64 [[TMP2265]], [[TMP2266]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4237]], label [[IF_THEN4239:%.*]], label [[IF_END4240:%.*]]
// SIMD-ONLY0:       if.then4239:
// SIMD-ONLY0-NEXT:    [[TMP2267:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2267]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4240]]
// SIMD-ONLY0:       if.end4240:
// SIMD-ONLY0-NEXT:    [[TMP2268:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2269:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4241:%.*]] = icmp sgt i64 [[TMP2268]], [[TMP2269]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4241]], label [[COND_TRUE4243:%.*]], label [[COND_FALSE4244:%.*]]
// SIMD-ONLY0:       cond.true4243:
// SIMD-ONLY0-NEXT:    [[TMP2270:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4245:%.*]]
// SIMD-ONLY0:       cond.false4244:
// SIMD-ONLY0-NEXT:    [[TMP2271:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4245]]
// SIMD-ONLY0:       cond.end4245:
// SIMD-ONLY0-NEXT:    [[COND4246:%.*]] = phi i64 [ [[TMP2270]], [[COND_TRUE4243]] ], [ [[TMP2271]], [[COND_FALSE4244]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4246]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2272:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2273:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4247:%.*]] = icmp slt i64 [[TMP2272]], [[TMP2273]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4247]], label [[COND_TRUE4249:%.*]], label [[COND_FALSE4250:%.*]]
// SIMD-ONLY0:       cond.true4249:
// SIMD-ONLY0-NEXT:    [[TMP2274:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4251:%.*]]
// SIMD-ONLY0:       cond.false4250:
// SIMD-ONLY0-NEXT:    [[TMP2275:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4251]]
// SIMD-ONLY0:       cond.end4251:
// SIMD-ONLY0-NEXT:    [[COND4252:%.*]] = phi i64 [ [[TMP2274]], [[COND_TRUE4249]] ], [ [[TMP2275]], [[COND_FALSE4250]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4252]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2276:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2277:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4253:%.*]] = icmp sgt i64 [[TMP2276]], [[TMP2277]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4253]], label [[COND_TRUE4255:%.*]], label [[COND_FALSE4256:%.*]]
// SIMD-ONLY0:       cond.true4255:
// SIMD-ONLY0-NEXT:    [[TMP2278:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4257:%.*]]
// SIMD-ONLY0:       cond.false4256:
// SIMD-ONLY0-NEXT:    [[TMP2279:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4257]]
// SIMD-ONLY0:       cond.end4257:
// SIMD-ONLY0-NEXT:    [[COND4258:%.*]] = phi i64 [ [[TMP2278]], [[COND_TRUE4255]] ], [ [[TMP2279]], [[COND_FALSE4256]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4258]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2280:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2281:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4259:%.*]] = icmp slt i64 [[TMP2280]], [[TMP2281]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4259]], label [[COND_TRUE4261:%.*]], label [[COND_FALSE4262:%.*]]
// SIMD-ONLY0:       cond.true4261:
// SIMD-ONLY0-NEXT:    [[TMP2282:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4263:%.*]]
// SIMD-ONLY0:       cond.false4262:
// SIMD-ONLY0-NEXT:    [[TMP2283:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4263]]
// SIMD-ONLY0:       cond.end4263:
// SIMD-ONLY0-NEXT:    [[COND4264:%.*]] = phi i64 [ [[TMP2282]], [[COND_TRUE4261]] ], [ [[TMP2283]], [[COND_FALSE4262]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4264]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2284:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2285:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4265:%.*]] = icmp sgt i64 [[TMP2284]], [[TMP2285]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4265]], label [[IF_THEN4267:%.*]], label [[IF_END4268:%.*]]
// SIMD-ONLY0:       if.then4267:
// SIMD-ONLY0-NEXT:    [[TMP2286:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2286]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4268]]
// SIMD-ONLY0:       if.end4268:
// SIMD-ONLY0-NEXT:    [[TMP2287:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2288:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4269:%.*]] = icmp slt i64 [[TMP2287]], [[TMP2288]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4269]], label [[IF_THEN4271:%.*]], label [[IF_END4272:%.*]]
// SIMD-ONLY0:       if.then4271:
// SIMD-ONLY0-NEXT:    [[TMP2289:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2289]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4272]]
// SIMD-ONLY0:       if.end4272:
// SIMD-ONLY0-NEXT:    [[TMP2290:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2291:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4273:%.*]] = icmp sgt i64 [[TMP2290]], [[TMP2291]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4273]], label [[IF_THEN4275:%.*]], label [[IF_END4276:%.*]]
// SIMD-ONLY0:       if.then4275:
// SIMD-ONLY0-NEXT:    [[TMP2292:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2292]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4276]]
// SIMD-ONLY0:       if.end4276:
// SIMD-ONLY0-NEXT:    [[TMP2293:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2294:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4277:%.*]] = icmp slt i64 [[TMP2293]], [[TMP2294]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4277]], label [[IF_THEN4279:%.*]], label [[IF_END4280:%.*]]
// SIMD-ONLY0:       if.then4279:
// SIMD-ONLY0-NEXT:    [[TMP2295:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2295]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4280]]
// SIMD-ONLY0:       if.end4280:
// SIMD-ONLY0-NEXT:    [[TMP2296:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2297:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4281:%.*]] = icmp eq i64 [[TMP2296]], [[TMP2297]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4281]], label [[COND_TRUE4283:%.*]], label [[COND_FALSE4284:%.*]]
// SIMD-ONLY0:       cond.true4283:
// SIMD-ONLY0-NEXT:    [[TMP2298:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4285:%.*]]
// SIMD-ONLY0:       cond.false4284:
// SIMD-ONLY0-NEXT:    [[TMP2299:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4285]]
// SIMD-ONLY0:       cond.end4285:
// SIMD-ONLY0-NEXT:    [[COND4286:%.*]] = phi i64 [ [[TMP2298]], [[COND_TRUE4283]] ], [ [[TMP2299]], [[COND_FALSE4284]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4286]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2300:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2301:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4287:%.*]] = icmp eq i64 [[TMP2300]], [[TMP2301]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4287]], label [[COND_TRUE4289:%.*]], label [[COND_FALSE4290:%.*]]
// SIMD-ONLY0:       cond.true4289:
// SIMD-ONLY0-NEXT:    [[TMP2302:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4291:%.*]]
// SIMD-ONLY0:       cond.false4290:
// SIMD-ONLY0-NEXT:    [[TMP2303:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4291]]
// SIMD-ONLY0:       cond.end4291:
// SIMD-ONLY0-NEXT:    [[COND4292:%.*]] = phi i64 [ [[TMP2302]], [[COND_TRUE4289]] ], [ [[TMP2303]], [[COND_FALSE4290]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4292]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2304:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2305:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4293:%.*]] = icmp eq i64 [[TMP2304]], [[TMP2305]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4293]], label [[IF_THEN4295:%.*]], label [[IF_END4296:%.*]]
// SIMD-ONLY0:       if.then4295:
// SIMD-ONLY0-NEXT:    [[TMP2306:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2306]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4296]]
// SIMD-ONLY0:       if.end4296:
// SIMD-ONLY0-NEXT:    [[TMP2307:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2308:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4297:%.*]] = icmp eq i64 [[TMP2307]], [[TMP2308]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4297]], label [[IF_THEN4299:%.*]], label [[IF_END4300:%.*]]
// SIMD-ONLY0:       if.then4299:
// SIMD-ONLY0-NEXT:    [[TMP2309:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2309]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4300]]
// SIMD-ONLY0:       if.end4300:
// SIMD-ONLY0-NEXT:    [[TMP2310:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2311:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4301:%.*]] = icmp ugt i64 [[TMP2310]], [[TMP2311]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4301]], label [[COND_TRUE4303:%.*]], label [[COND_FALSE4304:%.*]]
// SIMD-ONLY0:       cond.true4303:
// SIMD-ONLY0-NEXT:    [[TMP2312:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4305:%.*]]
// SIMD-ONLY0:       cond.false4304:
// SIMD-ONLY0-NEXT:    [[TMP2313:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4305]]
// SIMD-ONLY0:       cond.end4305:
// SIMD-ONLY0-NEXT:    [[COND4306:%.*]] = phi i64 [ [[TMP2312]], [[COND_TRUE4303]] ], [ [[TMP2313]], [[COND_FALSE4304]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4306]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2314:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2315:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4307:%.*]] = icmp ult i64 [[TMP2314]], [[TMP2315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4307]], label [[COND_TRUE4309:%.*]], label [[COND_FALSE4310:%.*]]
// SIMD-ONLY0:       cond.true4309:
// SIMD-ONLY0-NEXT:    [[TMP2316:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4311:%.*]]
// SIMD-ONLY0:       cond.false4310:
// SIMD-ONLY0-NEXT:    [[TMP2317:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4311]]
// SIMD-ONLY0:       cond.end4311:
// SIMD-ONLY0-NEXT:    [[COND4312:%.*]] = phi i64 [ [[TMP2316]], [[COND_TRUE4309]] ], [ [[TMP2317]], [[COND_FALSE4310]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4312]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2318:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2319:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4313:%.*]] = icmp ugt i64 [[TMP2318]], [[TMP2319]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4313]], label [[COND_TRUE4315:%.*]], label [[COND_FALSE4316:%.*]]
// SIMD-ONLY0:       cond.true4315:
// SIMD-ONLY0-NEXT:    [[TMP2320:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4317:%.*]]
// SIMD-ONLY0:       cond.false4316:
// SIMD-ONLY0-NEXT:    [[TMP2321:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4317]]
// SIMD-ONLY0:       cond.end4317:
// SIMD-ONLY0-NEXT:    [[COND4318:%.*]] = phi i64 [ [[TMP2320]], [[COND_TRUE4315]] ], [ [[TMP2321]], [[COND_FALSE4316]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4318]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2322:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2323:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4319:%.*]] = icmp ult i64 [[TMP2322]], [[TMP2323]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4319]], label [[COND_TRUE4321:%.*]], label [[COND_FALSE4322:%.*]]
// SIMD-ONLY0:       cond.true4321:
// SIMD-ONLY0-NEXT:    [[TMP2324:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4323:%.*]]
// SIMD-ONLY0:       cond.false4322:
// SIMD-ONLY0-NEXT:    [[TMP2325:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4323]]
// SIMD-ONLY0:       cond.end4323:
// SIMD-ONLY0-NEXT:    [[COND4324:%.*]] = phi i64 [ [[TMP2324]], [[COND_TRUE4321]] ], [ [[TMP2325]], [[COND_FALSE4322]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4324]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2326:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2327:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4325:%.*]] = icmp ugt i64 [[TMP2326]], [[TMP2327]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4325]], label [[IF_THEN4327:%.*]], label [[IF_END4328:%.*]]
// SIMD-ONLY0:       if.then4327:
// SIMD-ONLY0-NEXT:    [[TMP2328:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2328]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4328]]
// SIMD-ONLY0:       if.end4328:
// SIMD-ONLY0-NEXT:    [[TMP2329:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2330:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4329:%.*]] = icmp ult i64 [[TMP2329]], [[TMP2330]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4329]], label [[IF_THEN4331:%.*]], label [[IF_END4332:%.*]]
// SIMD-ONLY0:       if.then4331:
// SIMD-ONLY0-NEXT:    [[TMP2331:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2331]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4332]]
// SIMD-ONLY0:       if.end4332:
// SIMD-ONLY0-NEXT:    [[TMP2332:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2333:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4333:%.*]] = icmp ugt i64 [[TMP2332]], [[TMP2333]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4333]], label [[IF_THEN4335:%.*]], label [[IF_END4336:%.*]]
// SIMD-ONLY0:       if.then4335:
// SIMD-ONLY0-NEXT:    [[TMP2334:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2334]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4336]]
// SIMD-ONLY0:       if.end4336:
// SIMD-ONLY0-NEXT:    [[TMP2335:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2336:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4337:%.*]] = icmp ult i64 [[TMP2335]], [[TMP2336]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4337]], label [[IF_THEN4339:%.*]], label [[IF_END4340:%.*]]
// SIMD-ONLY0:       if.then4339:
// SIMD-ONLY0-NEXT:    [[TMP2337:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2337]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4340]]
// SIMD-ONLY0:       if.end4340:
// SIMD-ONLY0-NEXT:    [[TMP2338:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2339:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4341:%.*]] = icmp eq i64 [[TMP2338]], [[TMP2339]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4341]], label [[COND_TRUE4343:%.*]], label [[COND_FALSE4344:%.*]]
// SIMD-ONLY0:       cond.true4343:
// SIMD-ONLY0-NEXT:    [[TMP2340:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4345:%.*]]
// SIMD-ONLY0:       cond.false4344:
// SIMD-ONLY0-NEXT:    [[TMP2341:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4345]]
// SIMD-ONLY0:       cond.end4345:
// SIMD-ONLY0-NEXT:    [[COND4346:%.*]] = phi i64 [ [[TMP2340]], [[COND_TRUE4343]] ], [ [[TMP2341]], [[COND_FALSE4344]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4346]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2342:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2343:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4347:%.*]] = icmp eq i64 [[TMP2342]], [[TMP2343]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4347]], label [[COND_TRUE4349:%.*]], label [[COND_FALSE4350:%.*]]
// SIMD-ONLY0:       cond.true4349:
// SIMD-ONLY0-NEXT:    [[TMP2344:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4351:%.*]]
// SIMD-ONLY0:       cond.false4350:
// SIMD-ONLY0-NEXT:    [[TMP2345:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4351]]
// SIMD-ONLY0:       cond.end4351:
// SIMD-ONLY0-NEXT:    [[COND4352:%.*]] = phi i64 [ [[TMP2344]], [[COND_TRUE4349]] ], [ [[TMP2345]], [[COND_FALSE4350]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4352]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2346:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2347:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4353:%.*]] = icmp eq i64 [[TMP2346]], [[TMP2347]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4353]], label [[IF_THEN4355:%.*]], label [[IF_END4356:%.*]]
// SIMD-ONLY0:       if.then4355:
// SIMD-ONLY0-NEXT:    [[TMP2348:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2348]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4356]]
// SIMD-ONLY0:       if.end4356:
// SIMD-ONLY0-NEXT:    [[TMP2349:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2350:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4357:%.*]] = icmp eq i64 [[TMP2349]], [[TMP2350]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4357]], label [[IF_THEN4359:%.*]], label [[IF_END4360:%.*]]
// SIMD-ONLY0:       if.then4359:
// SIMD-ONLY0-NEXT:    [[TMP2351:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2351]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4360]]
// SIMD-ONLY0:       if.end4360:
// SIMD-ONLY0-NEXT:    [[TMP2352:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2353:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4361:%.*]] = icmp sgt i64 [[TMP2352]], [[TMP2353]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4361]], label [[COND_TRUE4363:%.*]], label [[COND_FALSE4364:%.*]]
// SIMD-ONLY0:       cond.true4363:
// SIMD-ONLY0-NEXT:    [[TMP2354:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4365:%.*]]
// SIMD-ONLY0:       cond.false4364:
// SIMD-ONLY0-NEXT:    [[TMP2355:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4365]]
// SIMD-ONLY0:       cond.end4365:
// SIMD-ONLY0-NEXT:    [[COND4366:%.*]] = phi i64 [ [[TMP2354]], [[COND_TRUE4363]] ], [ [[TMP2355]], [[COND_FALSE4364]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4366]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2356:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2357:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4367:%.*]] = icmp slt i64 [[TMP2356]], [[TMP2357]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4367]], label [[COND_TRUE4369:%.*]], label [[COND_FALSE4370:%.*]]
// SIMD-ONLY0:       cond.true4369:
// SIMD-ONLY0-NEXT:    [[TMP2358:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4371:%.*]]
// SIMD-ONLY0:       cond.false4370:
// SIMD-ONLY0-NEXT:    [[TMP2359:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4371]]
// SIMD-ONLY0:       cond.end4371:
// SIMD-ONLY0-NEXT:    [[COND4372:%.*]] = phi i64 [ [[TMP2358]], [[COND_TRUE4369]] ], [ [[TMP2359]], [[COND_FALSE4370]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4372]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2360:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2361:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4373:%.*]] = icmp sgt i64 [[TMP2360]], [[TMP2361]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4373]], label [[COND_TRUE4375:%.*]], label [[COND_FALSE4376:%.*]]
// SIMD-ONLY0:       cond.true4375:
// SIMD-ONLY0-NEXT:    [[TMP2362:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4377:%.*]]
// SIMD-ONLY0:       cond.false4376:
// SIMD-ONLY0-NEXT:    [[TMP2363:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4377]]
// SIMD-ONLY0:       cond.end4377:
// SIMD-ONLY0-NEXT:    [[COND4378:%.*]] = phi i64 [ [[TMP2362]], [[COND_TRUE4375]] ], [ [[TMP2363]], [[COND_FALSE4376]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4378]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2364:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2365:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4379:%.*]] = icmp slt i64 [[TMP2364]], [[TMP2365]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4379]], label [[COND_TRUE4381:%.*]], label [[COND_FALSE4382:%.*]]
// SIMD-ONLY0:       cond.true4381:
// SIMD-ONLY0-NEXT:    [[TMP2366:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4383:%.*]]
// SIMD-ONLY0:       cond.false4382:
// SIMD-ONLY0-NEXT:    [[TMP2367:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4383]]
// SIMD-ONLY0:       cond.end4383:
// SIMD-ONLY0-NEXT:    [[COND4384:%.*]] = phi i64 [ [[TMP2366]], [[COND_TRUE4381]] ], [ [[TMP2367]], [[COND_FALSE4382]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4384]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2368:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2369:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4385:%.*]] = icmp sgt i64 [[TMP2368]], [[TMP2369]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4385]], label [[IF_THEN4387:%.*]], label [[IF_END4388:%.*]]
// SIMD-ONLY0:       if.then4387:
// SIMD-ONLY0-NEXT:    [[TMP2370:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2370]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4388]]
// SIMD-ONLY0:       if.end4388:
// SIMD-ONLY0-NEXT:    [[TMP2371:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2372:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4389:%.*]] = icmp slt i64 [[TMP2371]], [[TMP2372]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4389]], label [[IF_THEN4391:%.*]], label [[IF_END4392:%.*]]
// SIMD-ONLY0:       if.then4391:
// SIMD-ONLY0-NEXT:    [[TMP2373:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2373]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4392]]
// SIMD-ONLY0:       if.end4392:
// SIMD-ONLY0-NEXT:    [[TMP2374:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2375:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4393:%.*]] = icmp sgt i64 [[TMP2374]], [[TMP2375]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4393]], label [[IF_THEN4395:%.*]], label [[IF_END4396:%.*]]
// SIMD-ONLY0:       if.then4395:
// SIMD-ONLY0-NEXT:    [[TMP2376:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2376]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4396]]
// SIMD-ONLY0:       if.end4396:
// SIMD-ONLY0-NEXT:    [[TMP2377:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2378:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4397:%.*]] = icmp slt i64 [[TMP2377]], [[TMP2378]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4397]], label [[IF_THEN4399:%.*]], label [[IF_END4400:%.*]]
// SIMD-ONLY0:       if.then4399:
// SIMD-ONLY0-NEXT:    [[TMP2379:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2379]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4400]]
// SIMD-ONLY0:       if.end4400:
// SIMD-ONLY0-NEXT:    [[TMP2380:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2381:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4401:%.*]] = icmp eq i64 [[TMP2380]], [[TMP2381]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4401]], label [[COND_TRUE4403:%.*]], label [[COND_FALSE4404:%.*]]
// SIMD-ONLY0:       cond.true4403:
// SIMD-ONLY0-NEXT:    [[TMP2382:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4405:%.*]]
// SIMD-ONLY0:       cond.false4404:
// SIMD-ONLY0-NEXT:    [[TMP2383:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4405]]
// SIMD-ONLY0:       cond.end4405:
// SIMD-ONLY0-NEXT:    [[COND4406:%.*]] = phi i64 [ [[TMP2382]], [[COND_TRUE4403]] ], [ [[TMP2383]], [[COND_FALSE4404]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4406]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2384:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2385:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4407:%.*]] = icmp eq i64 [[TMP2384]], [[TMP2385]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4407]], label [[COND_TRUE4409:%.*]], label [[COND_FALSE4410:%.*]]
// SIMD-ONLY0:       cond.true4409:
// SIMD-ONLY0-NEXT:    [[TMP2386:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4411:%.*]]
// SIMD-ONLY0:       cond.false4410:
// SIMD-ONLY0-NEXT:    [[TMP2387:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4411]]
// SIMD-ONLY0:       cond.end4411:
// SIMD-ONLY0-NEXT:    [[COND4412:%.*]] = phi i64 [ [[TMP2386]], [[COND_TRUE4409]] ], [ [[TMP2387]], [[COND_FALSE4410]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4412]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2388:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2389:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4413:%.*]] = icmp eq i64 [[TMP2388]], [[TMP2389]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4413]], label [[IF_THEN4415:%.*]], label [[IF_END4416:%.*]]
// SIMD-ONLY0:       if.then4415:
// SIMD-ONLY0-NEXT:    [[TMP2390:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2390]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4416]]
// SIMD-ONLY0:       if.end4416:
// SIMD-ONLY0-NEXT:    [[TMP2391:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2392:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4417:%.*]] = icmp eq i64 [[TMP2391]], [[TMP2392]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4417]], label [[IF_THEN4419:%.*]], label [[IF_END4420:%.*]]
// SIMD-ONLY0:       if.then4419:
// SIMD-ONLY0-NEXT:    [[TMP2393:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2393]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4420]]
// SIMD-ONLY0:       if.end4420:
// SIMD-ONLY0-NEXT:    [[TMP2394:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2395:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4421:%.*]] = icmp ugt i64 [[TMP2394]], [[TMP2395]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4421]], label [[COND_TRUE4423:%.*]], label [[COND_FALSE4424:%.*]]
// SIMD-ONLY0:       cond.true4423:
// SIMD-ONLY0-NEXT:    [[TMP2396:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4425:%.*]]
// SIMD-ONLY0:       cond.false4424:
// SIMD-ONLY0-NEXT:    [[TMP2397:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4425]]
// SIMD-ONLY0:       cond.end4425:
// SIMD-ONLY0-NEXT:    [[COND4426:%.*]] = phi i64 [ [[TMP2396]], [[COND_TRUE4423]] ], [ [[TMP2397]], [[COND_FALSE4424]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4426]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2398:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2399:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4427:%.*]] = icmp ult i64 [[TMP2398]], [[TMP2399]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4427]], label [[COND_TRUE4429:%.*]], label [[COND_FALSE4430:%.*]]
// SIMD-ONLY0:       cond.true4429:
// SIMD-ONLY0-NEXT:    [[TMP2400:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4431:%.*]]
// SIMD-ONLY0:       cond.false4430:
// SIMD-ONLY0-NEXT:    [[TMP2401:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4431]]
// SIMD-ONLY0:       cond.end4431:
// SIMD-ONLY0-NEXT:    [[COND4432:%.*]] = phi i64 [ [[TMP2400]], [[COND_TRUE4429]] ], [ [[TMP2401]], [[COND_FALSE4430]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4432]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2402:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2403:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4433:%.*]] = icmp ugt i64 [[TMP2402]], [[TMP2403]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4433]], label [[COND_TRUE4435:%.*]], label [[COND_FALSE4436:%.*]]
// SIMD-ONLY0:       cond.true4435:
// SIMD-ONLY0-NEXT:    [[TMP2404:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4437:%.*]]
// SIMD-ONLY0:       cond.false4436:
// SIMD-ONLY0-NEXT:    [[TMP2405:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4437]]
// SIMD-ONLY0:       cond.end4437:
// SIMD-ONLY0-NEXT:    [[COND4438:%.*]] = phi i64 [ [[TMP2404]], [[COND_TRUE4435]] ], [ [[TMP2405]], [[COND_FALSE4436]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4438]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2406:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2407:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4439:%.*]] = icmp ult i64 [[TMP2406]], [[TMP2407]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4439]], label [[COND_TRUE4441:%.*]], label [[COND_FALSE4442:%.*]]
// SIMD-ONLY0:       cond.true4441:
// SIMD-ONLY0-NEXT:    [[TMP2408:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4443:%.*]]
// SIMD-ONLY0:       cond.false4442:
// SIMD-ONLY0-NEXT:    [[TMP2409:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4443]]
// SIMD-ONLY0:       cond.end4443:
// SIMD-ONLY0-NEXT:    [[COND4444:%.*]] = phi i64 [ [[TMP2408]], [[COND_TRUE4441]] ], [ [[TMP2409]], [[COND_FALSE4442]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4444]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2410:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2411:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4445:%.*]] = icmp ugt i64 [[TMP2410]], [[TMP2411]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4445]], label [[IF_THEN4447:%.*]], label [[IF_END4448:%.*]]
// SIMD-ONLY0:       if.then4447:
// SIMD-ONLY0-NEXT:    [[TMP2412:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2412]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4448]]
// SIMD-ONLY0:       if.end4448:
// SIMD-ONLY0-NEXT:    [[TMP2413:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2414:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4449:%.*]] = icmp ult i64 [[TMP2413]], [[TMP2414]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4449]], label [[IF_THEN4451:%.*]], label [[IF_END4452:%.*]]
// SIMD-ONLY0:       if.then4451:
// SIMD-ONLY0-NEXT:    [[TMP2415:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2415]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4452]]
// SIMD-ONLY0:       if.end4452:
// SIMD-ONLY0-NEXT:    [[TMP2416:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2417:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4453:%.*]] = icmp ugt i64 [[TMP2416]], [[TMP2417]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4453]], label [[IF_THEN4455:%.*]], label [[IF_END4456:%.*]]
// SIMD-ONLY0:       if.then4455:
// SIMD-ONLY0-NEXT:    [[TMP2418:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2418]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4456]]
// SIMD-ONLY0:       if.end4456:
// SIMD-ONLY0-NEXT:    [[TMP2419:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2420:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4457:%.*]] = icmp ult i64 [[TMP2419]], [[TMP2420]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4457]], label [[IF_THEN4459:%.*]], label [[IF_END4460:%.*]]
// SIMD-ONLY0:       if.then4459:
// SIMD-ONLY0-NEXT:    [[TMP2421:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2421]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4460]]
// SIMD-ONLY0:       if.end4460:
// SIMD-ONLY0-NEXT:    [[TMP2422:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2423:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4461:%.*]] = icmp eq i64 [[TMP2422]], [[TMP2423]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4461]], label [[COND_TRUE4463:%.*]], label [[COND_FALSE4464:%.*]]
// SIMD-ONLY0:       cond.true4463:
// SIMD-ONLY0-NEXT:    [[TMP2424:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4465:%.*]]
// SIMD-ONLY0:       cond.false4464:
// SIMD-ONLY0-NEXT:    [[TMP2425:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4465]]
// SIMD-ONLY0:       cond.end4465:
// SIMD-ONLY0-NEXT:    [[COND4466:%.*]] = phi i64 [ [[TMP2424]], [[COND_TRUE4463]] ], [ [[TMP2425]], [[COND_FALSE4464]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4466]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2426:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2427:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4467:%.*]] = icmp eq i64 [[TMP2426]], [[TMP2427]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4467]], label [[COND_TRUE4469:%.*]], label [[COND_FALSE4470:%.*]]
// SIMD-ONLY0:       cond.true4469:
// SIMD-ONLY0-NEXT:    [[TMP2428:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4471:%.*]]
// SIMD-ONLY0:       cond.false4470:
// SIMD-ONLY0-NEXT:    [[TMP2429:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4471]]
// SIMD-ONLY0:       cond.end4471:
// SIMD-ONLY0-NEXT:    [[COND4472:%.*]] = phi i64 [ [[TMP2428]], [[COND_TRUE4469]] ], [ [[TMP2429]], [[COND_FALSE4470]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4472]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2430:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2431:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4473:%.*]] = icmp eq i64 [[TMP2430]], [[TMP2431]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4473]], label [[IF_THEN4475:%.*]], label [[IF_END4476:%.*]]
// SIMD-ONLY0:       if.then4475:
// SIMD-ONLY0-NEXT:    [[TMP2432:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2432]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4476]]
// SIMD-ONLY0:       if.end4476:
// SIMD-ONLY0-NEXT:    [[TMP2433:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2434:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4477:%.*]] = icmp eq i64 [[TMP2433]], [[TMP2434]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4477]], label [[IF_THEN4479:%.*]], label [[IF_END4480:%.*]]
// SIMD-ONLY0:       if.then4479:
// SIMD-ONLY0-NEXT:    [[TMP2435:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2435]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4480]]
// SIMD-ONLY0:       if.end4480:
// SIMD-ONLY0-NEXT:    [[TMP2436:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2437:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4481:%.*]] = icmp sgt i64 [[TMP2436]], [[TMP2437]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4481]], label [[COND_TRUE4483:%.*]], label [[COND_FALSE4484:%.*]]
// SIMD-ONLY0:       cond.true4483:
// SIMD-ONLY0-NEXT:    [[TMP2438:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4485:%.*]]
// SIMD-ONLY0:       cond.false4484:
// SIMD-ONLY0-NEXT:    [[TMP2439:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4485]]
// SIMD-ONLY0:       cond.end4485:
// SIMD-ONLY0-NEXT:    [[COND4486:%.*]] = phi i64 [ [[TMP2438]], [[COND_TRUE4483]] ], [ [[TMP2439]], [[COND_FALSE4484]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4486]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2440:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2441:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4487:%.*]] = icmp slt i64 [[TMP2440]], [[TMP2441]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4487]], label [[COND_TRUE4489:%.*]], label [[COND_FALSE4490:%.*]]
// SIMD-ONLY0:       cond.true4489:
// SIMD-ONLY0-NEXT:    [[TMP2442:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4491:%.*]]
// SIMD-ONLY0:       cond.false4490:
// SIMD-ONLY0-NEXT:    [[TMP2443:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4491]]
// SIMD-ONLY0:       cond.end4491:
// SIMD-ONLY0-NEXT:    [[COND4492:%.*]] = phi i64 [ [[TMP2442]], [[COND_TRUE4489]] ], [ [[TMP2443]], [[COND_FALSE4490]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4492]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2444:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2445:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4493:%.*]] = icmp sgt i64 [[TMP2444]], [[TMP2445]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4493]], label [[COND_TRUE4495:%.*]], label [[COND_FALSE4496:%.*]]
// SIMD-ONLY0:       cond.true4495:
// SIMD-ONLY0-NEXT:    [[TMP2446:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4497:%.*]]
// SIMD-ONLY0:       cond.false4496:
// SIMD-ONLY0-NEXT:    [[TMP2447:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4497]]
// SIMD-ONLY0:       cond.end4497:
// SIMD-ONLY0-NEXT:    [[COND4498:%.*]] = phi i64 [ [[TMP2446]], [[COND_TRUE4495]] ], [ [[TMP2447]], [[COND_FALSE4496]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4498]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2448:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2449:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4499:%.*]] = icmp slt i64 [[TMP2448]], [[TMP2449]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4499]], label [[COND_TRUE4501:%.*]], label [[COND_FALSE4502:%.*]]
// SIMD-ONLY0:       cond.true4501:
// SIMD-ONLY0-NEXT:    [[TMP2450:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4503:%.*]]
// SIMD-ONLY0:       cond.false4502:
// SIMD-ONLY0-NEXT:    [[TMP2451:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4503]]
// SIMD-ONLY0:       cond.end4503:
// SIMD-ONLY0-NEXT:    [[COND4504:%.*]] = phi i64 [ [[TMP2450]], [[COND_TRUE4501]] ], [ [[TMP2451]], [[COND_FALSE4502]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4504]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2452:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2453:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4505:%.*]] = icmp sgt i64 [[TMP2452]], [[TMP2453]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4505]], label [[IF_THEN4507:%.*]], label [[IF_END4508:%.*]]
// SIMD-ONLY0:       if.then4507:
// SIMD-ONLY0-NEXT:    [[TMP2454:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2454]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4508]]
// SIMD-ONLY0:       if.end4508:
// SIMD-ONLY0-NEXT:    [[TMP2455:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2456:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4509:%.*]] = icmp slt i64 [[TMP2455]], [[TMP2456]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4509]], label [[IF_THEN4511:%.*]], label [[IF_END4512:%.*]]
// SIMD-ONLY0:       if.then4511:
// SIMD-ONLY0-NEXT:    [[TMP2457:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2457]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4512]]
// SIMD-ONLY0:       if.end4512:
// SIMD-ONLY0-NEXT:    [[TMP2458:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2459:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4513:%.*]] = icmp sgt i64 [[TMP2458]], [[TMP2459]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4513]], label [[IF_THEN4515:%.*]], label [[IF_END4516:%.*]]
// SIMD-ONLY0:       if.then4515:
// SIMD-ONLY0-NEXT:    [[TMP2460:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2460]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4516]]
// SIMD-ONLY0:       if.end4516:
// SIMD-ONLY0-NEXT:    [[TMP2461:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2462:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4517:%.*]] = icmp slt i64 [[TMP2461]], [[TMP2462]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4517]], label [[IF_THEN4519:%.*]], label [[IF_END4520:%.*]]
// SIMD-ONLY0:       if.then4519:
// SIMD-ONLY0-NEXT:    [[TMP2463:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2463]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4520]]
// SIMD-ONLY0:       if.end4520:
// SIMD-ONLY0-NEXT:    [[TMP2464:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2465:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4521:%.*]] = icmp eq i64 [[TMP2464]], [[TMP2465]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4521]], label [[COND_TRUE4523:%.*]], label [[COND_FALSE4524:%.*]]
// SIMD-ONLY0:       cond.true4523:
// SIMD-ONLY0-NEXT:    [[TMP2466:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4525:%.*]]
// SIMD-ONLY0:       cond.false4524:
// SIMD-ONLY0-NEXT:    [[TMP2467:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4525]]
// SIMD-ONLY0:       cond.end4525:
// SIMD-ONLY0-NEXT:    [[COND4526:%.*]] = phi i64 [ [[TMP2466]], [[COND_TRUE4523]] ], [ [[TMP2467]], [[COND_FALSE4524]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4526]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2468:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2469:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4527:%.*]] = icmp eq i64 [[TMP2468]], [[TMP2469]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4527]], label [[COND_TRUE4529:%.*]], label [[COND_FALSE4530:%.*]]
// SIMD-ONLY0:       cond.true4529:
// SIMD-ONLY0-NEXT:    [[TMP2470:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4531:%.*]]
// SIMD-ONLY0:       cond.false4530:
// SIMD-ONLY0-NEXT:    [[TMP2471:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4531]]
// SIMD-ONLY0:       cond.end4531:
// SIMD-ONLY0-NEXT:    [[COND4532:%.*]] = phi i64 [ [[TMP2470]], [[COND_TRUE4529]] ], [ [[TMP2471]], [[COND_FALSE4530]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4532]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2472:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2473:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4533:%.*]] = icmp eq i64 [[TMP2472]], [[TMP2473]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4533]], label [[IF_THEN4535:%.*]], label [[IF_END4536:%.*]]
// SIMD-ONLY0:       if.then4535:
// SIMD-ONLY0-NEXT:    [[TMP2474:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2474]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4536]]
// SIMD-ONLY0:       if.end4536:
// SIMD-ONLY0-NEXT:    [[TMP2475:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2476:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4537:%.*]] = icmp eq i64 [[TMP2475]], [[TMP2476]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4537]], label [[IF_THEN4539:%.*]], label [[IF_END4540:%.*]]
// SIMD-ONLY0:       if.then4539:
// SIMD-ONLY0-NEXT:    [[TMP2477:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2477]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4540]]
// SIMD-ONLY0:       if.end4540:
// SIMD-ONLY0-NEXT:    [[TMP2478:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2479:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4541:%.*]] = icmp ugt i64 [[TMP2478]], [[TMP2479]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4541]], label [[COND_TRUE4543:%.*]], label [[COND_FALSE4544:%.*]]
// SIMD-ONLY0:       cond.true4543:
// SIMD-ONLY0-NEXT:    [[TMP2480:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4545:%.*]]
// SIMD-ONLY0:       cond.false4544:
// SIMD-ONLY0-NEXT:    [[TMP2481:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4545]]
// SIMD-ONLY0:       cond.end4545:
// SIMD-ONLY0-NEXT:    [[COND4546:%.*]] = phi i64 [ [[TMP2480]], [[COND_TRUE4543]] ], [ [[TMP2481]], [[COND_FALSE4544]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4546]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2482:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2483:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4547:%.*]] = icmp ult i64 [[TMP2482]], [[TMP2483]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4547]], label [[COND_TRUE4549:%.*]], label [[COND_FALSE4550:%.*]]
// SIMD-ONLY0:       cond.true4549:
// SIMD-ONLY0-NEXT:    [[TMP2484:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4551:%.*]]
// SIMD-ONLY0:       cond.false4550:
// SIMD-ONLY0-NEXT:    [[TMP2485:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4551]]
// SIMD-ONLY0:       cond.end4551:
// SIMD-ONLY0-NEXT:    [[COND4552:%.*]] = phi i64 [ [[TMP2484]], [[COND_TRUE4549]] ], [ [[TMP2485]], [[COND_FALSE4550]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4552]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2486:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2487:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4553:%.*]] = icmp ugt i64 [[TMP2486]], [[TMP2487]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4553]], label [[COND_TRUE4555:%.*]], label [[COND_FALSE4556:%.*]]
// SIMD-ONLY0:       cond.true4555:
// SIMD-ONLY0-NEXT:    [[TMP2488:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4557:%.*]]
// SIMD-ONLY0:       cond.false4556:
// SIMD-ONLY0-NEXT:    [[TMP2489:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4557]]
// SIMD-ONLY0:       cond.end4557:
// SIMD-ONLY0-NEXT:    [[COND4558:%.*]] = phi i64 [ [[TMP2488]], [[COND_TRUE4555]] ], [ [[TMP2489]], [[COND_FALSE4556]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4558]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2490:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2491:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4559:%.*]] = icmp ult i64 [[TMP2490]], [[TMP2491]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4559]], label [[COND_TRUE4561:%.*]], label [[COND_FALSE4562:%.*]]
// SIMD-ONLY0:       cond.true4561:
// SIMD-ONLY0-NEXT:    [[TMP2492:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4563:%.*]]
// SIMD-ONLY0:       cond.false4562:
// SIMD-ONLY0-NEXT:    [[TMP2493:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4563]]
// SIMD-ONLY0:       cond.end4563:
// SIMD-ONLY0-NEXT:    [[COND4564:%.*]] = phi i64 [ [[TMP2492]], [[COND_TRUE4561]] ], [ [[TMP2493]], [[COND_FALSE4562]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4564]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2494:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2495:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4565:%.*]] = icmp ugt i64 [[TMP2494]], [[TMP2495]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4565]], label [[IF_THEN4567:%.*]], label [[IF_END4568:%.*]]
// SIMD-ONLY0:       if.then4567:
// SIMD-ONLY0-NEXT:    [[TMP2496:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2496]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4568]]
// SIMD-ONLY0:       if.end4568:
// SIMD-ONLY0-NEXT:    [[TMP2497:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2498:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4569:%.*]] = icmp ult i64 [[TMP2497]], [[TMP2498]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4569]], label [[IF_THEN4571:%.*]], label [[IF_END4572:%.*]]
// SIMD-ONLY0:       if.then4571:
// SIMD-ONLY0-NEXT:    [[TMP2499:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2499]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4572]]
// SIMD-ONLY0:       if.end4572:
// SIMD-ONLY0-NEXT:    [[TMP2500:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2501:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4573:%.*]] = icmp ugt i64 [[TMP2500]], [[TMP2501]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4573]], label [[IF_THEN4575:%.*]], label [[IF_END4576:%.*]]
// SIMD-ONLY0:       if.then4575:
// SIMD-ONLY0-NEXT:    [[TMP2502:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2502]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4576]]
// SIMD-ONLY0:       if.end4576:
// SIMD-ONLY0-NEXT:    [[TMP2503:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2504:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4577:%.*]] = icmp ult i64 [[TMP2503]], [[TMP2504]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4577]], label [[IF_THEN4579:%.*]], label [[IF_END4580:%.*]]
// SIMD-ONLY0:       if.then4579:
// SIMD-ONLY0-NEXT:    [[TMP2505:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2505]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4580]]
// SIMD-ONLY0:       if.end4580:
// SIMD-ONLY0-NEXT:    [[TMP2506:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2507:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4581:%.*]] = icmp eq i64 [[TMP2506]], [[TMP2507]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4581]], label [[COND_TRUE4583:%.*]], label [[COND_FALSE4584:%.*]]
// SIMD-ONLY0:       cond.true4583:
// SIMD-ONLY0-NEXT:    [[TMP2508:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4585:%.*]]
// SIMD-ONLY0:       cond.false4584:
// SIMD-ONLY0-NEXT:    [[TMP2509:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4585]]
// SIMD-ONLY0:       cond.end4585:
// SIMD-ONLY0-NEXT:    [[COND4586:%.*]] = phi i64 [ [[TMP2508]], [[COND_TRUE4583]] ], [ [[TMP2509]], [[COND_FALSE4584]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4586]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2510:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2511:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4587:%.*]] = icmp eq i64 [[TMP2510]], [[TMP2511]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4587]], label [[COND_TRUE4589:%.*]], label [[COND_FALSE4590:%.*]]
// SIMD-ONLY0:       cond.true4589:
// SIMD-ONLY0-NEXT:    [[TMP2512:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4591:%.*]]
// SIMD-ONLY0:       cond.false4590:
// SIMD-ONLY0-NEXT:    [[TMP2513:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4591]]
// SIMD-ONLY0:       cond.end4591:
// SIMD-ONLY0-NEXT:    [[COND4592:%.*]] = phi i64 [ [[TMP2512]], [[COND_TRUE4589]] ], [ [[TMP2513]], [[COND_FALSE4590]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND4592]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2514:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2515:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4593:%.*]] = icmp eq i64 [[TMP2514]], [[TMP2515]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4593]], label [[IF_THEN4595:%.*]], label [[IF_END4596:%.*]]
// SIMD-ONLY0:       if.then4595:
// SIMD-ONLY0-NEXT:    [[TMP2516:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2516]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4596]]
// SIMD-ONLY0:       if.end4596:
// SIMD-ONLY0-NEXT:    [[TMP2517:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2518:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4597:%.*]] = icmp eq i64 [[TMP2517]], [[TMP2518]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4597]], label [[IF_THEN4599:%.*]], label [[IF_END4600:%.*]]
// SIMD-ONLY0:       if.then4599:
// SIMD-ONLY0-NEXT:    [[TMP2519:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2519]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4600]]
// SIMD-ONLY0:       if.end4600:
// SIMD-ONLY0-NEXT:    [[TMP2520:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2521:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4601:%.*]] = fcmp ogt float [[TMP2520]], [[TMP2521]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4601]], label [[COND_TRUE4603:%.*]], label [[COND_FALSE4604:%.*]]
// SIMD-ONLY0:       cond.true4603:
// SIMD-ONLY0-NEXT:    [[TMP2522:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4605:%.*]]
// SIMD-ONLY0:       cond.false4604:
// SIMD-ONLY0-NEXT:    [[TMP2523:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4605]]
// SIMD-ONLY0:       cond.end4605:
// SIMD-ONLY0-NEXT:    [[COND4606:%.*]] = phi float [ [[TMP2522]], [[COND_TRUE4603]] ], [ [[TMP2523]], [[COND_FALSE4604]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4606]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2524:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2525:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4607:%.*]] = fcmp olt float [[TMP2524]], [[TMP2525]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4607]], label [[COND_TRUE4609:%.*]], label [[COND_FALSE4610:%.*]]
// SIMD-ONLY0:       cond.true4609:
// SIMD-ONLY0-NEXT:    [[TMP2526:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4611:%.*]]
// SIMD-ONLY0:       cond.false4610:
// SIMD-ONLY0-NEXT:    [[TMP2527:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4611]]
// SIMD-ONLY0:       cond.end4611:
// SIMD-ONLY0-NEXT:    [[COND4612:%.*]] = phi float [ [[TMP2526]], [[COND_TRUE4609]] ], [ [[TMP2527]], [[COND_FALSE4610]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4612]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2528:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2529:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4613:%.*]] = fcmp ogt float [[TMP2528]], [[TMP2529]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4613]], label [[COND_TRUE4615:%.*]], label [[COND_FALSE4616:%.*]]
// SIMD-ONLY0:       cond.true4615:
// SIMD-ONLY0-NEXT:    [[TMP2530:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4617:%.*]]
// SIMD-ONLY0:       cond.false4616:
// SIMD-ONLY0-NEXT:    [[TMP2531:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4617]]
// SIMD-ONLY0:       cond.end4617:
// SIMD-ONLY0-NEXT:    [[COND4618:%.*]] = phi float [ [[TMP2530]], [[COND_TRUE4615]] ], [ [[TMP2531]], [[COND_FALSE4616]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4618]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2532:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2533:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4619:%.*]] = fcmp olt float [[TMP2532]], [[TMP2533]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4619]], label [[COND_TRUE4621:%.*]], label [[COND_FALSE4622:%.*]]
// SIMD-ONLY0:       cond.true4621:
// SIMD-ONLY0-NEXT:    [[TMP2534:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4623:%.*]]
// SIMD-ONLY0:       cond.false4622:
// SIMD-ONLY0-NEXT:    [[TMP2535:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4623]]
// SIMD-ONLY0:       cond.end4623:
// SIMD-ONLY0-NEXT:    [[COND4624:%.*]] = phi float [ [[TMP2534]], [[COND_TRUE4621]] ], [ [[TMP2535]], [[COND_FALSE4622]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4624]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2536:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2537:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4625:%.*]] = fcmp ogt float [[TMP2536]], [[TMP2537]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4625]], label [[IF_THEN4627:%.*]], label [[IF_END4628:%.*]]
// SIMD-ONLY0:       if.then4627:
// SIMD-ONLY0-NEXT:    [[TMP2538:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2538]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4628]]
// SIMD-ONLY0:       if.end4628:
// SIMD-ONLY0-NEXT:    [[TMP2539:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2540:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4629:%.*]] = fcmp olt float [[TMP2539]], [[TMP2540]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4629]], label [[IF_THEN4631:%.*]], label [[IF_END4632:%.*]]
// SIMD-ONLY0:       if.then4631:
// SIMD-ONLY0-NEXT:    [[TMP2541:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2541]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4632]]
// SIMD-ONLY0:       if.end4632:
// SIMD-ONLY0-NEXT:    [[TMP2542:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2543:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4633:%.*]] = fcmp ogt float [[TMP2542]], [[TMP2543]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4633]], label [[IF_THEN4635:%.*]], label [[IF_END4636:%.*]]
// SIMD-ONLY0:       if.then4635:
// SIMD-ONLY0-NEXT:    [[TMP2544:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2544]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4636]]
// SIMD-ONLY0:       if.end4636:
// SIMD-ONLY0-NEXT:    [[TMP2545:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2546:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4637:%.*]] = fcmp olt float [[TMP2545]], [[TMP2546]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4637]], label [[IF_THEN4639:%.*]], label [[IF_END4640:%.*]]
// SIMD-ONLY0:       if.then4639:
// SIMD-ONLY0-NEXT:    [[TMP2547:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2547]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4640]]
// SIMD-ONLY0:       if.end4640:
// SIMD-ONLY0-NEXT:    [[TMP2548:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2549:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4641:%.*]] = fcmp ogt float [[TMP2548]], [[TMP2549]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4641]], label [[COND_TRUE4643:%.*]], label [[COND_FALSE4644:%.*]]
// SIMD-ONLY0:       cond.true4643:
// SIMD-ONLY0-NEXT:    [[TMP2550:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4645:%.*]]
// SIMD-ONLY0:       cond.false4644:
// SIMD-ONLY0-NEXT:    [[TMP2551:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4645]]
// SIMD-ONLY0:       cond.end4645:
// SIMD-ONLY0-NEXT:    [[COND4646:%.*]] = phi float [ [[TMP2550]], [[COND_TRUE4643]] ], [ [[TMP2551]], [[COND_FALSE4644]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4646]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2552:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2553:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4647:%.*]] = fcmp olt float [[TMP2552]], [[TMP2553]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4647]], label [[COND_TRUE4649:%.*]], label [[COND_FALSE4650:%.*]]
// SIMD-ONLY0:       cond.true4649:
// SIMD-ONLY0-NEXT:    [[TMP2554:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4651:%.*]]
// SIMD-ONLY0:       cond.false4650:
// SIMD-ONLY0-NEXT:    [[TMP2555:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4651]]
// SIMD-ONLY0:       cond.end4651:
// SIMD-ONLY0-NEXT:    [[COND4652:%.*]] = phi float [ [[TMP2554]], [[COND_TRUE4649]] ], [ [[TMP2555]], [[COND_FALSE4650]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4652]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2556:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2557:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4653:%.*]] = fcmp ogt float [[TMP2556]], [[TMP2557]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4653]], label [[COND_TRUE4655:%.*]], label [[COND_FALSE4656:%.*]]
// SIMD-ONLY0:       cond.true4655:
// SIMD-ONLY0-NEXT:    [[TMP2558:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4657:%.*]]
// SIMD-ONLY0:       cond.false4656:
// SIMD-ONLY0-NEXT:    [[TMP2559:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4657]]
// SIMD-ONLY0:       cond.end4657:
// SIMD-ONLY0-NEXT:    [[COND4658:%.*]] = phi float [ [[TMP2558]], [[COND_TRUE4655]] ], [ [[TMP2559]], [[COND_FALSE4656]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4658]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2560:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2561:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4659:%.*]] = fcmp olt float [[TMP2560]], [[TMP2561]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4659]], label [[COND_TRUE4661:%.*]], label [[COND_FALSE4662:%.*]]
// SIMD-ONLY0:       cond.true4661:
// SIMD-ONLY0-NEXT:    [[TMP2562:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4663:%.*]]
// SIMD-ONLY0:       cond.false4662:
// SIMD-ONLY0-NEXT:    [[TMP2563:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4663]]
// SIMD-ONLY0:       cond.end4663:
// SIMD-ONLY0-NEXT:    [[COND4664:%.*]] = phi float [ [[TMP2562]], [[COND_TRUE4661]] ], [ [[TMP2563]], [[COND_FALSE4662]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4664]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2564:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2565:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4665:%.*]] = fcmp ogt float [[TMP2564]], [[TMP2565]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4665]], label [[IF_THEN4667:%.*]], label [[IF_END4668:%.*]]
// SIMD-ONLY0:       if.then4667:
// SIMD-ONLY0-NEXT:    [[TMP2566:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2566]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4668]]
// SIMD-ONLY0:       if.end4668:
// SIMD-ONLY0-NEXT:    [[TMP2567:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2568:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4669:%.*]] = fcmp olt float [[TMP2567]], [[TMP2568]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4669]], label [[IF_THEN4671:%.*]], label [[IF_END4672:%.*]]
// SIMD-ONLY0:       if.then4671:
// SIMD-ONLY0-NEXT:    [[TMP2569:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2569]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4672]]
// SIMD-ONLY0:       if.end4672:
// SIMD-ONLY0-NEXT:    [[TMP2570:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2571:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4673:%.*]] = fcmp ogt float [[TMP2570]], [[TMP2571]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4673]], label [[IF_THEN4675:%.*]], label [[IF_END4676:%.*]]
// SIMD-ONLY0:       if.then4675:
// SIMD-ONLY0-NEXT:    [[TMP2572:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2572]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4676]]
// SIMD-ONLY0:       if.end4676:
// SIMD-ONLY0-NEXT:    [[TMP2573:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2574:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4677:%.*]] = fcmp olt float [[TMP2573]], [[TMP2574]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4677]], label [[IF_THEN4679:%.*]], label [[IF_END4680:%.*]]
// SIMD-ONLY0:       if.then4679:
// SIMD-ONLY0-NEXT:    [[TMP2575:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2575]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4680]]
// SIMD-ONLY0:       if.end4680:
// SIMD-ONLY0-NEXT:    [[TMP2576:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2577:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4681:%.*]] = fcmp ogt float [[TMP2576]], [[TMP2577]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4681]], label [[COND_TRUE4683:%.*]], label [[COND_FALSE4684:%.*]]
// SIMD-ONLY0:       cond.true4683:
// SIMD-ONLY0-NEXT:    [[TMP2578:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4685:%.*]]
// SIMD-ONLY0:       cond.false4684:
// SIMD-ONLY0-NEXT:    [[TMP2579:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4685]]
// SIMD-ONLY0:       cond.end4685:
// SIMD-ONLY0-NEXT:    [[COND4686:%.*]] = phi float [ [[TMP2578]], [[COND_TRUE4683]] ], [ [[TMP2579]], [[COND_FALSE4684]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4686]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2580:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2581:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4687:%.*]] = fcmp olt float [[TMP2580]], [[TMP2581]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4687]], label [[COND_TRUE4689:%.*]], label [[COND_FALSE4690:%.*]]
// SIMD-ONLY0:       cond.true4689:
// SIMD-ONLY0-NEXT:    [[TMP2582:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4691:%.*]]
// SIMD-ONLY0:       cond.false4690:
// SIMD-ONLY0-NEXT:    [[TMP2583:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4691]]
// SIMD-ONLY0:       cond.end4691:
// SIMD-ONLY0-NEXT:    [[COND4692:%.*]] = phi float [ [[TMP2582]], [[COND_TRUE4689]] ], [ [[TMP2583]], [[COND_FALSE4690]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4692]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2584:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2585:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4693:%.*]] = fcmp ogt float [[TMP2584]], [[TMP2585]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4693]], label [[COND_TRUE4695:%.*]], label [[COND_FALSE4696:%.*]]
// SIMD-ONLY0:       cond.true4695:
// SIMD-ONLY0-NEXT:    [[TMP2586:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4697:%.*]]
// SIMD-ONLY0:       cond.false4696:
// SIMD-ONLY0-NEXT:    [[TMP2587:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4697]]
// SIMD-ONLY0:       cond.end4697:
// SIMD-ONLY0-NEXT:    [[COND4698:%.*]] = phi float [ [[TMP2586]], [[COND_TRUE4695]] ], [ [[TMP2587]], [[COND_FALSE4696]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4698]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2588:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2589:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4699:%.*]] = fcmp olt float [[TMP2588]], [[TMP2589]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4699]], label [[COND_TRUE4701:%.*]], label [[COND_FALSE4702:%.*]]
// SIMD-ONLY0:       cond.true4701:
// SIMD-ONLY0-NEXT:    [[TMP2590:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4703:%.*]]
// SIMD-ONLY0:       cond.false4702:
// SIMD-ONLY0-NEXT:    [[TMP2591:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4703]]
// SIMD-ONLY0:       cond.end4703:
// SIMD-ONLY0-NEXT:    [[COND4704:%.*]] = phi float [ [[TMP2590]], [[COND_TRUE4701]] ], [ [[TMP2591]], [[COND_FALSE4702]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4704]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2592:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2593:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4705:%.*]] = fcmp ogt float [[TMP2592]], [[TMP2593]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4705]], label [[IF_THEN4707:%.*]], label [[IF_END4708:%.*]]
// SIMD-ONLY0:       if.then4707:
// SIMD-ONLY0-NEXT:    [[TMP2594:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2594]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4708]]
// SIMD-ONLY0:       if.end4708:
// SIMD-ONLY0-NEXT:    [[TMP2595:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2596:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4709:%.*]] = fcmp olt float [[TMP2595]], [[TMP2596]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4709]], label [[IF_THEN4711:%.*]], label [[IF_END4712:%.*]]
// SIMD-ONLY0:       if.then4711:
// SIMD-ONLY0-NEXT:    [[TMP2597:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2597]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4712]]
// SIMD-ONLY0:       if.end4712:
// SIMD-ONLY0-NEXT:    [[TMP2598:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2599:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4713:%.*]] = fcmp ogt float [[TMP2598]], [[TMP2599]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4713]], label [[IF_THEN4715:%.*]], label [[IF_END4716:%.*]]
// SIMD-ONLY0:       if.then4715:
// SIMD-ONLY0-NEXT:    [[TMP2600:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2600]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4716]]
// SIMD-ONLY0:       if.end4716:
// SIMD-ONLY0-NEXT:    [[TMP2601:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2602:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4717:%.*]] = fcmp olt float [[TMP2601]], [[TMP2602]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4717]], label [[IF_THEN4719:%.*]], label [[IF_END4720:%.*]]
// SIMD-ONLY0:       if.then4719:
// SIMD-ONLY0-NEXT:    [[TMP2603:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2603]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4720]]
// SIMD-ONLY0:       if.end4720:
// SIMD-ONLY0-NEXT:    [[TMP2604:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2605:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4721:%.*]] = fcmp ogt float [[TMP2604]], [[TMP2605]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4721]], label [[COND_TRUE4723:%.*]], label [[COND_FALSE4724:%.*]]
// SIMD-ONLY0:       cond.true4723:
// SIMD-ONLY0-NEXT:    [[TMP2606:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4725:%.*]]
// SIMD-ONLY0:       cond.false4724:
// SIMD-ONLY0-NEXT:    [[TMP2607:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4725]]
// SIMD-ONLY0:       cond.end4725:
// SIMD-ONLY0-NEXT:    [[COND4726:%.*]] = phi float [ [[TMP2606]], [[COND_TRUE4723]] ], [ [[TMP2607]], [[COND_FALSE4724]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4726]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2608:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2609:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4727:%.*]] = fcmp olt float [[TMP2608]], [[TMP2609]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4727]], label [[COND_TRUE4729:%.*]], label [[COND_FALSE4730:%.*]]
// SIMD-ONLY0:       cond.true4729:
// SIMD-ONLY0-NEXT:    [[TMP2610:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4731:%.*]]
// SIMD-ONLY0:       cond.false4730:
// SIMD-ONLY0-NEXT:    [[TMP2611:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4731]]
// SIMD-ONLY0:       cond.end4731:
// SIMD-ONLY0-NEXT:    [[COND4732:%.*]] = phi float [ [[TMP2610]], [[COND_TRUE4729]] ], [ [[TMP2611]], [[COND_FALSE4730]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4732]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2612:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2613:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4733:%.*]] = fcmp ogt float [[TMP2612]], [[TMP2613]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4733]], label [[COND_TRUE4735:%.*]], label [[COND_FALSE4736:%.*]]
// SIMD-ONLY0:       cond.true4735:
// SIMD-ONLY0-NEXT:    [[TMP2614:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4737:%.*]]
// SIMD-ONLY0:       cond.false4736:
// SIMD-ONLY0-NEXT:    [[TMP2615:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4737]]
// SIMD-ONLY0:       cond.end4737:
// SIMD-ONLY0-NEXT:    [[COND4738:%.*]] = phi float [ [[TMP2614]], [[COND_TRUE4735]] ], [ [[TMP2615]], [[COND_FALSE4736]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4738]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2616:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2617:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4739:%.*]] = fcmp olt float [[TMP2616]], [[TMP2617]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4739]], label [[COND_TRUE4741:%.*]], label [[COND_FALSE4742:%.*]]
// SIMD-ONLY0:       cond.true4741:
// SIMD-ONLY0-NEXT:    [[TMP2618:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4743:%.*]]
// SIMD-ONLY0:       cond.false4742:
// SIMD-ONLY0-NEXT:    [[TMP2619:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4743]]
// SIMD-ONLY0:       cond.end4743:
// SIMD-ONLY0-NEXT:    [[COND4744:%.*]] = phi float [ [[TMP2618]], [[COND_TRUE4741]] ], [ [[TMP2619]], [[COND_FALSE4742]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4744]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2620:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2621:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4745:%.*]] = fcmp ogt float [[TMP2620]], [[TMP2621]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4745]], label [[IF_THEN4747:%.*]], label [[IF_END4748:%.*]]
// SIMD-ONLY0:       if.then4747:
// SIMD-ONLY0-NEXT:    [[TMP2622:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2622]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4748]]
// SIMD-ONLY0:       if.end4748:
// SIMD-ONLY0-NEXT:    [[TMP2623:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2624:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4749:%.*]] = fcmp olt float [[TMP2623]], [[TMP2624]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4749]], label [[IF_THEN4751:%.*]], label [[IF_END4752:%.*]]
// SIMD-ONLY0:       if.then4751:
// SIMD-ONLY0-NEXT:    [[TMP2625:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2625]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4752]]
// SIMD-ONLY0:       if.end4752:
// SIMD-ONLY0-NEXT:    [[TMP2626:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2627:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4753:%.*]] = fcmp ogt float [[TMP2626]], [[TMP2627]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4753]], label [[IF_THEN4755:%.*]], label [[IF_END4756:%.*]]
// SIMD-ONLY0:       if.then4755:
// SIMD-ONLY0-NEXT:    [[TMP2628:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2628]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4756]]
// SIMD-ONLY0:       if.end4756:
// SIMD-ONLY0-NEXT:    [[TMP2629:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2630:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4757:%.*]] = fcmp olt float [[TMP2629]], [[TMP2630]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4757]], label [[IF_THEN4759:%.*]], label [[IF_END4760:%.*]]
// SIMD-ONLY0:       if.then4759:
// SIMD-ONLY0-NEXT:    [[TMP2631:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2631]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4760]]
// SIMD-ONLY0:       if.end4760:
// SIMD-ONLY0-NEXT:    [[TMP2632:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2633:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4761:%.*]] = fcmp ogt float [[TMP2632]], [[TMP2633]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4761]], label [[COND_TRUE4763:%.*]], label [[COND_FALSE4764:%.*]]
// SIMD-ONLY0:       cond.true4763:
// SIMD-ONLY0-NEXT:    [[TMP2634:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4765:%.*]]
// SIMD-ONLY0:       cond.false4764:
// SIMD-ONLY0-NEXT:    [[TMP2635:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4765]]
// SIMD-ONLY0:       cond.end4765:
// SIMD-ONLY0-NEXT:    [[COND4766:%.*]] = phi float [ [[TMP2634]], [[COND_TRUE4763]] ], [ [[TMP2635]], [[COND_FALSE4764]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4766]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2636:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2637:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4767:%.*]] = fcmp olt float [[TMP2636]], [[TMP2637]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4767]], label [[COND_TRUE4769:%.*]], label [[COND_FALSE4770:%.*]]
// SIMD-ONLY0:       cond.true4769:
// SIMD-ONLY0-NEXT:    [[TMP2638:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4771:%.*]]
// SIMD-ONLY0:       cond.false4770:
// SIMD-ONLY0-NEXT:    [[TMP2639:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4771]]
// SIMD-ONLY0:       cond.end4771:
// SIMD-ONLY0-NEXT:    [[COND4772:%.*]] = phi float [ [[TMP2638]], [[COND_TRUE4769]] ], [ [[TMP2639]], [[COND_FALSE4770]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4772]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2640:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2641:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4773:%.*]] = fcmp ogt float [[TMP2640]], [[TMP2641]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4773]], label [[COND_TRUE4775:%.*]], label [[COND_FALSE4776:%.*]]
// SIMD-ONLY0:       cond.true4775:
// SIMD-ONLY0-NEXT:    [[TMP2642:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4777:%.*]]
// SIMD-ONLY0:       cond.false4776:
// SIMD-ONLY0-NEXT:    [[TMP2643:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4777]]
// SIMD-ONLY0:       cond.end4777:
// SIMD-ONLY0-NEXT:    [[COND4778:%.*]] = phi float [ [[TMP2642]], [[COND_TRUE4775]] ], [ [[TMP2643]], [[COND_FALSE4776]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4778]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2644:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2645:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4779:%.*]] = fcmp olt float [[TMP2644]], [[TMP2645]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4779]], label [[COND_TRUE4781:%.*]], label [[COND_FALSE4782:%.*]]
// SIMD-ONLY0:       cond.true4781:
// SIMD-ONLY0-NEXT:    [[TMP2646:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4783:%.*]]
// SIMD-ONLY0:       cond.false4782:
// SIMD-ONLY0-NEXT:    [[TMP2647:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4783]]
// SIMD-ONLY0:       cond.end4783:
// SIMD-ONLY0-NEXT:    [[COND4784:%.*]] = phi float [ [[TMP2646]], [[COND_TRUE4781]] ], [ [[TMP2647]], [[COND_FALSE4782]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4784]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2648:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2649:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4785:%.*]] = fcmp ogt float [[TMP2648]], [[TMP2649]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4785]], label [[IF_THEN4787:%.*]], label [[IF_END4788:%.*]]
// SIMD-ONLY0:       if.then4787:
// SIMD-ONLY0-NEXT:    [[TMP2650:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2650]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4788]]
// SIMD-ONLY0:       if.end4788:
// SIMD-ONLY0-NEXT:    [[TMP2651:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2652:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4789:%.*]] = fcmp olt float [[TMP2651]], [[TMP2652]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4789]], label [[IF_THEN4791:%.*]], label [[IF_END4792:%.*]]
// SIMD-ONLY0:       if.then4791:
// SIMD-ONLY0-NEXT:    [[TMP2653:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2653]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4792]]
// SIMD-ONLY0:       if.end4792:
// SIMD-ONLY0-NEXT:    [[TMP2654:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2655:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4793:%.*]] = fcmp ogt float [[TMP2654]], [[TMP2655]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4793]], label [[IF_THEN4795:%.*]], label [[IF_END4796:%.*]]
// SIMD-ONLY0:       if.then4795:
// SIMD-ONLY0-NEXT:    [[TMP2656:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2656]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4796]]
// SIMD-ONLY0:       if.end4796:
// SIMD-ONLY0-NEXT:    [[TMP2657:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2658:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4797:%.*]] = fcmp olt float [[TMP2657]], [[TMP2658]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4797]], label [[IF_THEN4799:%.*]], label [[IF_END4800:%.*]]
// SIMD-ONLY0:       if.then4799:
// SIMD-ONLY0-NEXT:    [[TMP2659:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2659]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4800]]
// SIMD-ONLY0:       if.end4800:
// SIMD-ONLY0-NEXT:    [[TMP2660:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2661:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4801:%.*]] = fcmp ogt float [[TMP2660]], [[TMP2661]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4801]], label [[COND_TRUE4803:%.*]], label [[COND_FALSE4804:%.*]]
// SIMD-ONLY0:       cond.true4803:
// SIMD-ONLY0-NEXT:    [[TMP2662:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4805:%.*]]
// SIMD-ONLY0:       cond.false4804:
// SIMD-ONLY0-NEXT:    [[TMP2663:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4805]]
// SIMD-ONLY0:       cond.end4805:
// SIMD-ONLY0-NEXT:    [[COND4806:%.*]] = phi float [ [[TMP2662]], [[COND_TRUE4803]] ], [ [[TMP2663]], [[COND_FALSE4804]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4806]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2664:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2665:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4807:%.*]] = fcmp olt float [[TMP2664]], [[TMP2665]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4807]], label [[COND_TRUE4809:%.*]], label [[COND_FALSE4810:%.*]]
// SIMD-ONLY0:       cond.true4809:
// SIMD-ONLY0-NEXT:    [[TMP2666:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4811:%.*]]
// SIMD-ONLY0:       cond.false4810:
// SIMD-ONLY0-NEXT:    [[TMP2667:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4811]]
// SIMD-ONLY0:       cond.end4811:
// SIMD-ONLY0-NEXT:    [[COND4812:%.*]] = phi float [ [[TMP2666]], [[COND_TRUE4809]] ], [ [[TMP2667]], [[COND_FALSE4810]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4812]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2668:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2669:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4813:%.*]] = fcmp ogt float [[TMP2668]], [[TMP2669]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4813]], label [[COND_TRUE4815:%.*]], label [[COND_FALSE4816:%.*]]
// SIMD-ONLY0:       cond.true4815:
// SIMD-ONLY0-NEXT:    [[TMP2670:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4817:%.*]]
// SIMD-ONLY0:       cond.false4816:
// SIMD-ONLY0-NEXT:    [[TMP2671:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4817]]
// SIMD-ONLY0:       cond.end4817:
// SIMD-ONLY0-NEXT:    [[COND4818:%.*]] = phi float [ [[TMP2670]], [[COND_TRUE4815]] ], [ [[TMP2671]], [[COND_FALSE4816]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4818]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2672:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2673:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4819:%.*]] = fcmp olt float [[TMP2672]], [[TMP2673]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4819]], label [[COND_TRUE4821:%.*]], label [[COND_FALSE4822:%.*]]
// SIMD-ONLY0:       cond.true4821:
// SIMD-ONLY0-NEXT:    [[TMP2674:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4823:%.*]]
// SIMD-ONLY0:       cond.false4822:
// SIMD-ONLY0-NEXT:    [[TMP2675:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4823]]
// SIMD-ONLY0:       cond.end4823:
// SIMD-ONLY0-NEXT:    [[COND4824:%.*]] = phi float [ [[TMP2674]], [[COND_TRUE4821]] ], [ [[TMP2675]], [[COND_FALSE4822]] ]
// SIMD-ONLY0-NEXT:    store float [[COND4824]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2676:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2677:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4825:%.*]] = fcmp ogt float [[TMP2676]], [[TMP2677]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4825]], label [[IF_THEN4827:%.*]], label [[IF_END4828:%.*]]
// SIMD-ONLY0:       if.then4827:
// SIMD-ONLY0-NEXT:    [[TMP2678:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2678]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4828]]
// SIMD-ONLY0:       if.end4828:
// SIMD-ONLY0-NEXT:    [[TMP2679:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2680:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4829:%.*]] = fcmp olt float [[TMP2679]], [[TMP2680]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4829]], label [[IF_THEN4831:%.*]], label [[IF_END4832:%.*]]
// SIMD-ONLY0:       if.then4831:
// SIMD-ONLY0-NEXT:    [[TMP2681:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2681]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4832]]
// SIMD-ONLY0:       if.end4832:
// SIMD-ONLY0-NEXT:    [[TMP2682:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2683:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4833:%.*]] = fcmp ogt float [[TMP2682]], [[TMP2683]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4833]], label [[IF_THEN4835:%.*]], label [[IF_END4836:%.*]]
// SIMD-ONLY0:       if.then4835:
// SIMD-ONLY0-NEXT:    [[TMP2684:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2684]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4836]]
// SIMD-ONLY0:       if.end4836:
// SIMD-ONLY0-NEXT:    [[TMP2685:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2686:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP4837:%.*]] = fcmp olt float [[TMP2685]], [[TMP2686]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4837]], label [[IF_THEN4839:%.*]], label [[IF_END4840:%.*]]
// SIMD-ONLY0:       if.then4839:
// SIMD-ONLY0-NEXT:    [[TMP2687:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP2687]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END4840]]
// SIMD-ONLY0:       if.end4840:
// SIMD-ONLY0-NEXT:    [[TMP2688:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2689:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4841:%.*]] = fcmp ogt double [[TMP2688]], [[TMP2689]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4841]], label [[COND_TRUE4843:%.*]], label [[COND_FALSE4844:%.*]]
// SIMD-ONLY0:       cond.true4843:
// SIMD-ONLY0-NEXT:    [[TMP2690:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4845:%.*]]
// SIMD-ONLY0:       cond.false4844:
// SIMD-ONLY0-NEXT:    [[TMP2691:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4845]]
// SIMD-ONLY0:       cond.end4845:
// SIMD-ONLY0-NEXT:    [[COND4846:%.*]] = phi double [ [[TMP2690]], [[COND_TRUE4843]] ], [ [[TMP2691]], [[COND_FALSE4844]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4846]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2692:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2693:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4847:%.*]] = fcmp olt double [[TMP2692]], [[TMP2693]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4847]], label [[COND_TRUE4849:%.*]], label [[COND_FALSE4850:%.*]]
// SIMD-ONLY0:       cond.true4849:
// SIMD-ONLY0-NEXT:    [[TMP2694:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4851:%.*]]
// SIMD-ONLY0:       cond.false4850:
// SIMD-ONLY0-NEXT:    [[TMP2695:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4851]]
// SIMD-ONLY0:       cond.end4851:
// SIMD-ONLY0-NEXT:    [[COND4852:%.*]] = phi double [ [[TMP2694]], [[COND_TRUE4849]] ], [ [[TMP2695]], [[COND_FALSE4850]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4852]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2696:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2697:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4853:%.*]] = fcmp ogt double [[TMP2696]], [[TMP2697]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4853]], label [[COND_TRUE4855:%.*]], label [[COND_FALSE4856:%.*]]
// SIMD-ONLY0:       cond.true4855:
// SIMD-ONLY0-NEXT:    [[TMP2698:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4857:%.*]]
// SIMD-ONLY0:       cond.false4856:
// SIMD-ONLY0-NEXT:    [[TMP2699:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4857]]
// SIMD-ONLY0:       cond.end4857:
// SIMD-ONLY0-NEXT:    [[COND4858:%.*]] = phi double [ [[TMP2698]], [[COND_TRUE4855]] ], [ [[TMP2699]], [[COND_FALSE4856]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4858]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2700:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2701:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4859:%.*]] = fcmp olt double [[TMP2700]], [[TMP2701]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4859]], label [[COND_TRUE4861:%.*]], label [[COND_FALSE4862:%.*]]
// SIMD-ONLY0:       cond.true4861:
// SIMD-ONLY0-NEXT:    [[TMP2702:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4863:%.*]]
// SIMD-ONLY0:       cond.false4862:
// SIMD-ONLY0-NEXT:    [[TMP2703:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4863]]
// SIMD-ONLY0:       cond.end4863:
// SIMD-ONLY0-NEXT:    [[COND4864:%.*]] = phi double [ [[TMP2702]], [[COND_TRUE4861]] ], [ [[TMP2703]], [[COND_FALSE4862]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4864]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2704:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2705:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4865:%.*]] = fcmp ogt double [[TMP2704]], [[TMP2705]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4865]], label [[IF_THEN4867:%.*]], label [[IF_END4868:%.*]]
// SIMD-ONLY0:       if.then4867:
// SIMD-ONLY0-NEXT:    [[TMP2706:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2706]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4868]]
// SIMD-ONLY0:       if.end4868:
// SIMD-ONLY0-NEXT:    [[TMP2707:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2708:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4869:%.*]] = fcmp olt double [[TMP2707]], [[TMP2708]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4869]], label [[IF_THEN4871:%.*]], label [[IF_END4872:%.*]]
// SIMD-ONLY0:       if.then4871:
// SIMD-ONLY0-NEXT:    [[TMP2709:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2709]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4872]]
// SIMD-ONLY0:       if.end4872:
// SIMD-ONLY0-NEXT:    [[TMP2710:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2711:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4873:%.*]] = fcmp ogt double [[TMP2710]], [[TMP2711]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4873]], label [[IF_THEN4875:%.*]], label [[IF_END4876:%.*]]
// SIMD-ONLY0:       if.then4875:
// SIMD-ONLY0-NEXT:    [[TMP2712:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2712]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4876]]
// SIMD-ONLY0:       if.end4876:
// SIMD-ONLY0-NEXT:    [[TMP2713:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2714:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4877:%.*]] = fcmp olt double [[TMP2713]], [[TMP2714]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4877]], label [[IF_THEN4879:%.*]], label [[IF_END4880:%.*]]
// SIMD-ONLY0:       if.then4879:
// SIMD-ONLY0-NEXT:    [[TMP2715:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2715]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4880]]
// SIMD-ONLY0:       if.end4880:
// SIMD-ONLY0-NEXT:    [[TMP2716:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2717:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4881:%.*]] = fcmp ogt double [[TMP2716]], [[TMP2717]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4881]], label [[COND_TRUE4883:%.*]], label [[COND_FALSE4884:%.*]]
// SIMD-ONLY0:       cond.true4883:
// SIMD-ONLY0-NEXT:    [[TMP2718:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4885:%.*]]
// SIMD-ONLY0:       cond.false4884:
// SIMD-ONLY0-NEXT:    [[TMP2719:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4885]]
// SIMD-ONLY0:       cond.end4885:
// SIMD-ONLY0-NEXT:    [[COND4886:%.*]] = phi double [ [[TMP2718]], [[COND_TRUE4883]] ], [ [[TMP2719]], [[COND_FALSE4884]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4886]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2720:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2721:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4887:%.*]] = fcmp olt double [[TMP2720]], [[TMP2721]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4887]], label [[COND_TRUE4889:%.*]], label [[COND_FALSE4890:%.*]]
// SIMD-ONLY0:       cond.true4889:
// SIMD-ONLY0-NEXT:    [[TMP2722:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4891:%.*]]
// SIMD-ONLY0:       cond.false4890:
// SIMD-ONLY0-NEXT:    [[TMP2723:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4891]]
// SIMD-ONLY0:       cond.end4891:
// SIMD-ONLY0-NEXT:    [[COND4892:%.*]] = phi double [ [[TMP2722]], [[COND_TRUE4889]] ], [ [[TMP2723]], [[COND_FALSE4890]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4892]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2724:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2725:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4893:%.*]] = fcmp ogt double [[TMP2724]], [[TMP2725]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4893]], label [[COND_TRUE4895:%.*]], label [[COND_FALSE4896:%.*]]
// SIMD-ONLY0:       cond.true4895:
// SIMD-ONLY0-NEXT:    [[TMP2726:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4897:%.*]]
// SIMD-ONLY0:       cond.false4896:
// SIMD-ONLY0-NEXT:    [[TMP2727:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4897]]
// SIMD-ONLY0:       cond.end4897:
// SIMD-ONLY0-NEXT:    [[COND4898:%.*]] = phi double [ [[TMP2726]], [[COND_TRUE4895]] ], [ [[TMP2727]], [[COND_FALSE4896]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4898]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2728:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2729:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4899:%.*]] = fcmp olt double [[TMP2728]], [[TMP2729]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4899]], label [[COND_TRUE4901:%.*]], label [[COND_FALSE4902:%.*]]
// SIMD-ONLY0:       cond.true4901:
// SIMD-ONLY0-NEXT:    [[TMP2730:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4903:%.*]]
// SIMD-ONLY0:       cond.false4902:
// SIMD-ONLY0-NEXT:    [[TMP2731:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4903]]
// SIMD-ONLY0:       cond.end4903:
// SIMD-ONLY0-NEXT:    [[COND4904:%.*]] = phi double [ [[TMP2730]], [[COND_TRUE4901]] ], [ [[TMP2731]], [[COND_FALSE4902]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4904]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2732:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2733:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4905:%.*]] = fcmp ogt double [[TMP2732]], [[TMP2733]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4905]], label [[IF_THEN4907:%.*]], label [[IF_END4908:%.*]]
// SIMD-ONLY0:       if.then4907:
// SIMD-ONLY0-NEXT:    [[TMP2734:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2734]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4908]]
// SIMD-ONLY0:       if.end4908:
// SIMD-ONLY0-NEXT:    [[TMP2735:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2736:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4909:%.*]] = fcmp olt double [[TMP2735]], [[TMP2736]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4909]], label [[IF_THEN4911:%.*]], label [[IF_END4912:%.*]]
// SIMD-ONLY0:       if.then4911:
// SIMD-ONLY0-NEXT:    [[TMP2737:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2737]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4912]]
// SIMD-ONLY0:       if.end4912:
// SIMD-ONLY0-NEXT:    [[TMP2738:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2739:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4913:%.*]] = fcmp ogt double [[TMP2738]], [[TMP2739]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4913]], label [[IF_THEN4915:%.*]], label [[IF_END4916:%.*]]
// SIMD-ONLY0:       if.then4915:
// SIMD-ONLY0-NEXT:    [[TMP2740:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2740]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4916]]
// SIMD-ONLY0:       if.end4916:
// SIMD-ONLY0-NEXT:    [[TMP2741:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2742:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4917:%.*]] = fcmp olt double [[TMP2741]], [[TMP2742]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4917]], label [[IF_THEN4919:%.*]], label [[IF_END4920:%.*]]
// SIMD-ONLY0:       if.then4919:
// SIMD-ONLY0-NEXT:    [[TMP2743:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2743]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4920]]
// SIMD-ONLY0:       if.end4920:
// SIMD-ONLY0-NEXT:    [[TMP2744:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2745:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4921:%.*]] = fcmp ogt double [[TMP2744]], [[TMP2745]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4921]], label [[COND_TRUE4923:%.*]], label [[COND_FALSE4924:%.*]]
// SIMD-ONLY0:       cond.true4923:
// SIMD-ONLY0-NEXT:    [[TMP2746:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4925:%.*]]
// SIMD-ONLY0:       cond.false4924:
// SIMD-ONLY0-NEXT:    [[TMP2747:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4925]]
// SIMD-ONLY0:       cond.end4925:
// SIMD-ONLY0-NEXT:    [[COND4926:%.*]] = phi double [ [[TMP2746]], [[COND_TRUE4923]] ], [ [[TMP2747]], [[COND_FALSE4924]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4926]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2748:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2749:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4927:%.*]] = fcmp olt double [[TMP2748]], [[TMP2749]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4927]], label [[COND_TRUE4929:%.*]], label [[COND_FALSE4930:%.*]]
// SIMD-ONLY0:       cond.true4929:
// SIMD-ONLY0-NEXT:    [[TMP2750:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4931:%.*]]
// SIMD-ONLY0:       cond.false4930:
// SIMD-ONLY0-NEXT:    [[TMP2751:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4931]]
// SIMD-ONLY0:       cond.end4931:
// SIMD-ONLY0-NEXT:    [[COND4932:%.*]] = phi double [ [[TMP2750]], [[COND_TRUE4929]] ], [ [[TMP2751]], [[COND_FALSE4930]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4932]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2752:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2753:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4933:%.*]] = fcmp ogt double [[TMP2752]], [[TMP2753]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4933]], label [[COND_TRUE4935:%.*]], label [[COND_FALSE4936:%.*]]
// SIMD-ONLY0:       cond.true4935:
// SIMD-ONLY0-NEXT:    [[TMP2754:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4937:%.*]]
// SIMD-ONLY0:       cond.false4936:
// SIMD-ONLY0-NEXT:    [[TMP2755:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4937]]
// SIMD-ONLY0:       cond.end4937:
// SIMD-ONLY0-NEXT:    [[COND4938:%.*]] = phi double [ [[TMP2754]], [[COND_TRUE4935]] ], [ [[TMP2755]], [[COND_FALSE4936]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4938]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2756:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2757:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4939:%.*]] = fcmp olt double [[TMP2756]], [[TMP2757]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4939]], label [[COND_TRUE4941:%.*]], label [[COND_FALSE4942:%.*]]
// SIMD-ONLY0:       cond.true4941:
// SIMD-ONLY0-NEXT:    [[TMP2758:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4943:%.*]]
// SIMD-ONLY0:       cond.false4942:
// SIMD-ONLY0-NEXT:    [[TMP2759:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4943]]
// SIMD-ONLY0:       cond.end4943:
// SIMD-ONLY0-NEXT:    [[COND4944:%.*]] = phi double [ [[TMP2758]], [[COND_TRUE4941]] ], [ [[TMP2759]], [[COND_FALSE4942]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4944]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2760:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2761:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4945:%.*]] = fcmp ogt double [[TMP2760]], [[TMP2761]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4945]], label [[IF_THEN4947:%.*]], label [[IF_END4948:%.*]]
// SIMD-ONLY0:       if.then4947:
// SIMD-ONLY0-NEXT:    [[TMP2762:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2762]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4948]]
// SIMD-ONLY0:       if.end4948:
// SIMD-ONLY0-NEXT:    [[TMP2763:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2764:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4949:%.*]] = fcmp olt double [[TMP2763]], [[TMP2764]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4949]], label [[IF_THEN4951:%.*]], label [[IF_END4952:%.*]]
// SIMD-ONLY0:       if.then4951:
// SIMD-ONLY0-NEXT:    [[TMP2765:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2765]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4952]]
// SIMD-ONLY0:       if.end4952:
// SIMD-ONLY0-NEXT:    [[TMP2766:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2767:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4953:%.*]] = fcmp ogt double [[TMP2766]], [[TMP2767]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4953]], label [[IF_THEN4955:%.*]], label [[IF_END4956:%.*]]
// SIMD-ONLY0:       if.then4955:
// SIMD-ONLY0-NEXT:    [[TMP2768:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2768]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4956]]
// SIMD-ONLY0:       if.end4956:
// SIMD-ONLY0-NEXT:    [[TMP2769:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2770:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4957:%.*]] = fcmp olt double [[TMP2769]], [[TMP2770]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4957]], label [[IF_THEN4959:%.*]], label [[IF_END4960:%.*]]
// SIMD-ONLY0:       if.then4959:
// SIMD-ONLY0-NEXT:    [[TMP2771:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2771]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4960]]
// SIMD-ONLY0:       if.end4960:
// SIMD-ONLY0-NEXT:    [[TMP2772:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2773:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4961:%.*]] = fcmp ogt double [[TMP2772]], [[TMP2773]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4961]], label [[COND_TRUE4963:%.*]], label [[COND_FALSE4964:%.*]]
// SIMD-ONLY0:       cond.true4963:
// SIMD-ONLY0-NEXT:    [[TMP2774:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4965:%.*]]
// SIMD-ONLY0:       cond.false4964:
// SIMD-ONLY0-NEXT:    [[TMP2775:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4965]]
// SIMD-ONLY0:       cond.end4965:
// SIMD-ONLY0-NEXT:    [[COND4966:%.*]] = phi double [ [[TMP2774]], [[COND_TRUE4963]] ], [ [[TMP2775]], [[COND_FALSE4964]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4966]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2776:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2777:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4967:%.*]] = fcmp olt double [[TMP2776]], [[TMP2777]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4967]], label [[COND_TRUE4969:%.*]], label [[COND_FALSE4970:%.*]]
// SIMD-ONLY0:       cond.true4969:
// SIMD-ONLY0-NEXT:    [[TMP2778:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4971:%.*]]
// SIMD-ONLY0:       cond.false4970:
// SIMD-ONLY0-NEXT:    [[TMP2779:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4971]]
// SIMD-ONLY0:       cond.end4971:
// SIMD-ONLY0-NEXT:    [[COND4972:%.*]] = phi double [ [[TMP2778]], [[COND_TRUE4969]] ], [ [[TMP2779]], [[COND_FALSE4970]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4972]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2780:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2781:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4973:%.*]] = fcmp ogt double [[TMP2780]], [[TMP2781]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4973]], label [[COND_TRUE4975:%.*]], label [[COND_FALSE4976:%.*]]
// SIMD-ONLY0:       cond.true4975:
// SIMD-ONLY0-NEXT:    [[TMP2782:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4977:%.*]]
// SIMD-ONLY0:       cond.false4976:
// SIMD-ONLY0-NEXT:    [[TMP2783:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4977]]
// SIMD-ONLY0:       cond.end4977:
// SIMD-ONLY0-NEXT:    [[COND4978:%.*]] = phi double [ [[TMP2782]], [[COND_TRUE4975]] ], [ [[TMP2783]], [[COND_FALSE4976]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4978]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2784:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2785:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4979:%.*]] = fcmp olt double [[TMP2784]], [[TMP2785]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4979]], label [[COND_TRUE4981:%.*]], label [[COND_FALSE4982:%.*]]
// SIMD-ONLY0:       cond.true4981:
// SIMD-ONLY0-NEXT:    [[TMP2786:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4983:%.*]]
// SIMD-ONLY0:       cond.false4982:
// SIMD-ONLY0-NEXT:    [[TMP2787:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4983]]
// SIMD-ONLY0:       cond.end4983:
// SIMD-ONLY0-NEXT:    [[COND4984:%.*]] = phi double [ [[TMP2786]], [[COND_TRUE4981]] ], [ [[TMP2787]], [[COND_FALSE4982]] ]
// SIMD-ONLY0-NEXT:    store double [[COND4984]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2788:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2789:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4985:%.*]] = fcmp ogt double [[TMP2788]], [[TMP2789]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4985]], label [[IF_THEN4987:%.*]], label [[IF_END4988:%.*]]
// SIMD-ONLY0:       if.then4987:
// SIMD-ONLY0-NEXT:    [[TMP2790:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2790]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4988]]
// SIMD-ONLY0:       if.end4988:
// SIMD-ONLY0-NEXT:    [[TMP2791:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2792:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4989:%.*]] = fcmp olt double [[TMP2791]], [[TMP2792]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4989]], label [[IF_THEN4991:%.*]], label [[IF_END4992:%.*]]
// SIMD-ONLY0:       if.then4991:
// SIMD-ONLY0-NEXT:    [[TMP2793:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2793]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4992]]
// SIMD-ONLY0:       if.end4992:
// SIMD-ONLY0-NEXT:    [[TMP2794:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2795:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4993:%.*]] = fcmp ogt double [[TMP2794]], [[TMP2795]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4993]], label [[IF_THEN4995:%.*]], label [[IF_END4996:%.*]]
// SIMD-ONLY0:       if.then4995:
// SIMD-ONLY0-NEXT:    [[TMP2796:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2796]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4996]]
// SIMD-ONLY0:       if.end4996:
// SIMD-ONLY0-NEXT:    [[TMP2797:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2798:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4997:%.*]] = fcmp olt double [[TMP2797]], [[TMP2798]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4997]], label [[IF_THEN4999:%.*]], label [[IF_END5000:%.*]]
// SIMD-ONLY0:       if.then4999:
// SIMD-ONLY0-NEXT:    [[TMP2799:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2799]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5000]]
// SIMD-ONLY0:       if.end5000:
// SIMD-ONLY0-NEXT:    [[TMP2800:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2801:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5001:%.*]] = fcmp ogt double [[TMP2800]], [[TMP2801]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5001]], label [[COND_TRUE5003:%.*]], label [[COND_FALSE5004:%.*]]
// SIMD-ONLY0:       cond.true5003:
// SIMD-ONLY0-NEXT:    [[TMP2802:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5005:%.*]]
// SIMD-ONLY0:       cond.false5004:
// SIMD-ONLY0-NEXT:    [[TMP2803:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5005]]
// SIMD-ONLY0:       cond.end5005:
// SIMD-ONLY0-NEXT:    [[COND5006:%.*]] = phi double [ [[TMP2802]], [[COND_TRUE5003]] ], [ [[TMP2803]], [[COND_FALSE5004]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5006]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2804:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2805:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5007:%.*]] = fcmp olt double [[TMP2804]], [[TMP2805]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5007]], label [[COND_TRUE5009:%.*]], label [[COND_FALSE5010:%.*]]
// SIMD-ONLY0:       cond.true5009:
// SIMD-ONLY0-NEXT:    [[TMP2806:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5011:%.*]]
// SIMD-ONLY0:       cond.false5010:
// SIMD-ONLY0-NEXT:    [[TMP2807:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5011]]
// SIMD-ONLY0:       cond.end5011:
// SIMD-ONLY0-NEXT:    [[COND5012:%.*]] = phi double [ [[TMP2806]], [[COND_TRUE5009]] ], [ [[TMP2807]], [[COND_FALSE5010]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5012]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2808:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2809:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5013:%.*]] = fcmp ogt double [[TMP2808]], [[TMP2809]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5013]], label [[COND_TRUE5015:%.*]], label [[COND_FALSE5016:%.*]]
// SIMD-ONLY0:       cond.true5015:
// SIMD-ONLY0-NEXT:    [[TMP2810:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5017:%.*]]
// SIMD-ONLY0:       cond.false5016:
// SIMD-ONLY0-NEXT:    [[TMP2811:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5017]]
// SIMD-ONLY0:       cond.end5017:
// SIMD-ONLY0-NEXT:    [[COND5018:%.*]] = phi double [ [[TMP2810]], [[COND_TRUE5015]] ], [ [[TMP2811]], [[COND_FALSE5016]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5018]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2812:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2813:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5019:%.*]] = fcmp olt double [[TMP2812]], [[TMP2813]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5019]], label [[COND_TRUE5021:%.*]], label [[COND_FALSE5022:%.*]]
// SIMD-ONLY0:       cond.true5021:
// SIMD-ONLY0-NEXT:    [[TMP2814:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5023:%.*]]
// SIMD-ONLY0:       cond.false5022:
// SIMD-ONLY0-NEXT:    [[TMP2815:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5023]]
// SIMD-ONLY0:       cond.end5023:
// SIMD-ONLY0-NEXT:    [[COND5024:%.*]] = phi double [ [[TMP2814]], [[COND_TRUE5021]] ], [ [[TMP2815]], [[COND_FALSE5022]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5024]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2816:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2817:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5025:%.*]] = fcmp ogt double [[TMP2816]], [[TMP2817]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5025]], label [[IF_THEN5027:%.*]], label [[IF_END5028:%.*]]
// SIMD-ONLY0:       if.then5027:
// SIMD-ONLY0-NEXT:    [[TMP2818:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2818]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5028]]
// SIMD-ONLY0:       if.end5028:
// SIMD-ONLY0-NEXT:    [[TMP2819:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2820:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5029:%.*]] = fcmp olt double [[TMP2819]], [[TMP2820]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5029]], label [[IF_THEN5031:%.*]], label [[IF_END5032:%.*]]
// SIMD-ONLY0:       if.then5031:
// SIMD-ONLY0-NEXT:    [[TMP2821:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2821]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5032]]
// SIMD-ONLY0:       if.end5032:
// SIMD-ONLY0-NEXT:    [[TMP2822:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2823:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5033:%.*]] = fcmp ogt double [[TMP2822]], [[TMP2823]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5033]], label [[IF_THEN5035:%.*]], label [[IF_END5036:%.*]]
// SIMD-ONLY0:       if.then5035:
// SIMD-ONLY0-NEXT:    [[TMP2824:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2824]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5036]]
// SIMD-ONLY0:       if.end5036:
// SIMD-ONLY0-NEXT:    [[TMP2825:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2826:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5037:%.*]] = fcmp olt double [[TMP2825]], [[TMP2826]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5037]], label [[IF_THEN5039:%.*]], label [[IF_END5040:%.*]]
// SIMD-ONLY0:       if.then5039:
// SIMD-ONLY0-NEXT:    [[TMP2827:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2827]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5040]]
// SIMD-ONLY0:       if.end5040:
// SIMD-ONLY0-NEXT:    [[TMP2828:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2829:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5041:%.*]] = fcmp ogt double [[TMP2828]], [[TMP2829]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5041]], label [[COND_TRUE5043:%.*]], label [[COND_FALSE5044:%.*]]
// SIMD-ONLY0:       cond.true5043:
// SIMD-ONLY0-NEXT:    [[TMP2830:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5045:%.*]]
// SIMD-ONLY0:       cond.false5044:
// SIMD-ONLY0-NEXT:    [[TMP2831:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5045]]
// SIMD-ONLY0:       cond.end5045:
// SIMD-ONLY0-NEXT:    [[COND5046:%.*]] = phi double [ [[TMP2830]], [[COND_TRUE5043]] ], [ [[TMP2831]], [[COND_FALSE5044]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5046]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2832:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2833:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5047:%.*]] = fcmp olt double [[TMP2832]], [[TMP2833]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5047]], label [[COND_TRUE5049:%.*]], label [[COND_FALSE5050:%.*]]
// SIMD-ONLY0:       cond.true5049:
// SIMD-ONLY0-NEXT:    [[TMP2834:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5051:%.*]]
// SIMD-ONLY0:       cond.false5050:
// SIMD-ONLY0-NEXT:    [[TMP2835:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5051]]
// SIMD-ONLY0:       cond.end5051:
// SIMD-ONLY0-NEXT:    [[COND5052:%.*]] = phi double [ [[TMP2834]], [[COND_TRUE5049]] ], [ [[TMP2835]], [[COND_FALSE5050]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5052]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2836:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2837:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5053:%.*]] = fcmp ogt double [[TMP2836]], [[TMP2837]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5053]], label [[COND_TRUE5055:%.*]], label [[COND_FALSE5056:%.*]]
// SIMD-ONLY0:       cond.true5055:
// SIMD-ONLY0-NEXT:    [[TMP2838:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5057:%.*]]
// SIMD-ONLY0:       cond.false5056:
// SIMD-ONLY0-NEXT:    [[TMP2839:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5057]]
// SIMD-ONLY0:       cond.end5057:
// SIMD-ONLY0-NEXT:    [[COND5058:%.*]] = phi double [ [[TMP2838]], [[COND_TRUE5055]] ], [ [[TMP2839]], [[COND_FALSE5056]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5058]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2840:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2841:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5059:%.*]] = fcmp olt double [[TMP2840]], [[TMP2841]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5059]], label [[COND_TRUE5061:%.*]], label [[COND_FALSE5062:%.*]]
// SIMD-ONLY0:       cond.true5061:
// SIMD-ONLY0-NEXT:    [[TMP2842:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5063:%.*]]
// SIMD-ONLY0:       cond.false5062:
// SIMD-ONLY0-NEXT:    [[TMP2843:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END5063]]
// SIMD-ONLY0:       cond.end5063:
// SIMD-ONLY0-NEXT:    [[COND5064:%.*]] = phi double [ [[TMP2842]], [[COND_TRUE5061]] ], [ [[TMP2843]], [[COND_FALSE5062]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5064]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2844:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2845:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5065:%.*]] = fcmp ogt double [[TMP2844]], [[TMP2845]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5065]], label [[IF_THEN5067:%.*]], label [[IF_END5068:%.*]]
// SIMD-ONLY0:       if.then5067:
// SIMD-ONLY0-NEXT:    [[TMP2846:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2846]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5068]]
// SIMD-ONLY0:       if.end5068:
// SIMD-ONLY0-NEXT:    [[TMP2847:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2848:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5069:%.*]] = fcmp olt double [[TMP2847]], [[TMP2848]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5069]], label [[IF_THEN5071:%.*]], label [[IF_END5072:%.*]]
// SIMD-ONLY0:       if.then5071:
// SIMD-ONLY0-NEXT:    [[TMP2849:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2849]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5072]]
// SIMD-ONLY0:       if.end5072:
// SIMD-ONLY0-NEXT:    [[TMP2850:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2851:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5073:%.*]] = fcmp ogt double [[TMP2850]], [[TMP2851]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5073]], label [[IF_THEN5075:%.*]], label [[IF_END5076:%.*]]
// SIMD-ONLY0:       if.then5075:
// SIMD-ONLY0-NEXT:    [[TMP2852:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2852]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5076]]
// SIMD-ONLY0:       if.end5076:
// SIMD-ONLY0-NEXT:    [[TMP2853:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2854:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5077:%.*]] = fcmp olt double [[TMP2853]], [[TMP2854]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5077]], label [[IF_THEN5079:%.*]], label [[IF_END5080:%.*]]
// SIMD-ONLY0:       if.then5079:
// SIMD-ONLY0-NEXT:    [[TMP2855:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP2855]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5080]]
// SIMD-ONLY0:       if.end5080:
// SIMD-ONLY0-NEXT:    ret void
//
//
// SIMD-ONLY0-LABEL: @bar(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[CX:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CV:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CR:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CE:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CD:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCX:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCV:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCR:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCE:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCD:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[SX:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SV:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SR:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SE:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SD:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USX:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USV:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USR:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USE:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USD:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[IX:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[IV:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[IR:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[IE:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[ID:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIX:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIV:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIR:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIE:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UID:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[LX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LR:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULR:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLR:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLR:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[FX:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FV:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FE:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FD:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[DX:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DV:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DE:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DD:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP0]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV:%.*]] = sext i8 [[TMP1]] to i32
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1:%.*]] = sext i8 [[TMP2]] to i32
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV1]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
// SIMD-ONLY0:       if.then:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP3]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END]]
// SIMD-ONLY0:       if.end:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP4]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV3:%.*]] = sext i8 [[TMP5]] to i32
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV4:%.*]] = sext i8 [[TMP6]] to i32
// SIMD-ONLY0-NEXT:    [[CMP5:%.*]] = icmp sgt i32 [[CONV3]], [[CONV4]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5]], label [[IF_THEN7:%.*]], label [[IF_END8:%.*]]
// SIMD-ONLY0:       if.then7:
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP7]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END8]]
// SIMD-ONLY0:       if.end8:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP8]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV9:%.*]] = sext i8 [[TMP9]] to i32
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV10:%.*]] = sext i8 [[TMP10]] to i32
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp slt i32 [[CONV9]], [[CONV10]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[IF_THEN13:%.*]], label [[IF_END14:%.*]]
// SIMD-ONLY0:       if.then13:
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP11]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END14]]
// SIMD-ONLY0:       if.end14:
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP12]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV15:%.*]] = sext i8 [[TMP13]] to i32
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV16:%.*]] = sext i8 [[TMP14]] to i32
// SIMD-ONLY0-NEXT:    [[CMP17:%.*]] = icmp slt i32 [[CONV15]], [[CONV16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP17]], label [[IF_THEN19:%.*]], label [[IF_END20:%.*]]
// SIMD-ONLY0:       if.then19:
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP15]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END20]]
// SIMD-ONLY0:       if.end20:
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP16]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV21:%.*]] = sext i8 [[TMP17]] to i32
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV22:%.*]] = sext i8 [[TMP18]] to i32
// SIMD-ONLY0-NEXT:    [[CMP23:%.*]] = icmp eq i32 [[CONV21]], [[CONV22]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP23]], label [[IF_THEN25:%.*]], label [[IF_END26:%.*]]
// SIMD-ONLY0:       if.then25:
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP19]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END26]]
// SIMD-ONLY0:       if.end26:
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP20]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV27:%.*]] = sext i8 [[TMP21]] to i32
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV28:%.*]] = sext i8 [[TMP22]] to i32
// SIMD-ONLY0-NEXT:    [[CMP29:%.*]] = icmp eq i32 [[CONV27]], [[CONV28]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP29]], label [[IF_THEN31:%.*]], label [[IF_END32:%.*]]
// SIMD-ONLY0:       if.then31:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP23]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END32]]
// SIMD-ONLY0:       if.end32:
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV33:%.*]] = sext i8 [[TMP24]] to i32
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV34:%.*]] = sext i8 [[TMP25]] to i32
// SIMD-ONLY0-NEXT:    [[CMP35:%.*]] = icmp sgt i32 [[CONV33]], [[CONV34]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP35]], label [[IF_THEN37:%.*]], label [[IF_END38:%.*]]
// SIMD-ONLY0:       if.then37:
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP26]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END38]]
// SIMD-ONLY0:       if.end38:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP27]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV39:%.*]] = sext i8 [[TMP28]] to i32
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV40:%.*]] = sext i8 [[TMP29]] to i32
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp sgt i32 [[CONV39]], [[CONV40]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[IF_THEN43:%.*]], label [[IF_END44:%.*]]
// SIMD-ONLY0:       if.then43:
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP30]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END44]]
// SIMD-ONLY0:       if.end44:
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP31]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV45:%.*]] = sext i8 [[TMP32]] to i32
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV46:%.*]] = sext i8 [[TMP33]] to i32
// SIMD-ONLY0-NEXT:    [[CMP47:%.*]] = icmp slt i32 [[CONV45]], [[CONV46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP47]], label [[IF_THEN49:%.*]], label [[IF_END50:%.*]]
// SIMD-ONLY0:       if.then49:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP34]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END50]]
// SIMD-ONLY0:       if.end50:
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP35]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV51:%.*]] = sext i8 [[TMP36]] to i32
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV52:%.*]] = sext i8 [[TMP37]] to i32
// SIMD-ONLY0-NEXT:    [[CMP53:%.*]] = icmp slt i32 [[CONV51]], [[CONV52]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP53]], label [[IF_THEN55:%.*]], label [[IF_END56:%.*]]
// SIMD-ONLY0:       if.then55:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP38]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END56]]
// SIMD-ONLY0:       if.end56:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP39]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV57:%.*]] = sext i8 [[TMP40]] to i32
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV58:%.*]] = sext i8 [[TMP41]] to i32
// SIMD-ONLY0-NEXT:    [[CMP59:%.*]] = icmp eq i32 [[CONV57]], [[CONV58]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP59]], label [[IF_THEN61:%.*]], label [[IF_END62:%.*]]
// SIMD-ONLY0:       if.then61:
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP42]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END62]]
// SIMD-ONLY0:       if.end62:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP43]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV63:%.*]] = sext i8 [[TMP44]] to i32
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV64:%.*]] = sext i8 [[TMP45]] to i32
// SIMD-ONLY0-NEXT:    [[CMP65:%.*]] = icmp eq i32 [[CONV63]], [[CONV64]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP65]], label [[IF_THEN67:%.*]], label [[IF_END68:%.*]]
// SIMD-ONLY0:       if.then67:
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP46]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END68]]
// SIMD-ONLY0:       if.end68:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP47]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV69:%.*]] = sext i8 [[TMP48]] to i32
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV70:%.*]] = sext i8 [[TMP49]] to i32
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp eq i32 [[CONV69]], [[CONV70]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[IF_THEN73:%.*]], label [[IF_ELSE:%.*]]
// SIMD-ONLY0:       if.then73:
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP50]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END74:%.*]]
// SIMD-ONLY0:       if.else:
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP51]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END74]]
// SIMD-ONLY0:       if.end74:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV75:%.*]] = sext i8 [[TMP52]] to i32
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV76:%.*]] = sext i8 [[TMP53]] to i32
// SIMD-ONLY0-NEXT:    [[CMP77:%.*]] = icmp eq i32 [[CONV75]], [[CONV76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP77]], label [[IF_THEN79:%.*]], label [[IF_ELSE80:%.*]]
// SIMD-ONLY0:       if.then79:
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP54]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END81:%.*]]
// SIMD-ONLY0:       if.else80:
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP55]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END81]]
// SIMD-ONLY0:       if.end81:
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV82:%.*]] = sext i8 [[TMP56]] to i32
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV83:%.*]] = sext i8 [[TMP57]] to i32
// SIMD-ONLY0-NEXT:    [[CMP84:%.*]] = icmp eq i32 [[CONV82]], [[CONV83]]
// SIMD-ONLY0-NEXT:    [[CONV85:%.*]] = zext i1 [[CMP84]] to i32
// SIMD-ONLY0-NEXT:    [[CONV86:%.*]] = trunc i32 [[CONV85]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV86]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL:%.*]] = icmp ne i8 [[TMP58]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN87:%.*]], label [[IF_END88:%.*]]
// SIMD-ONLY0:       if.then87:
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP59]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END88]]
// SIMD-ONLY0:       if.end88:
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV89:%.*]] = sext i8 [[TMP60]] to i32
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV90:%.*]] = sext i8 [[TMP61]] to i32
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp eq i32 [[CONV89]], [[CONV90]]
// SIMD-ONLY0-NEXT:    [[CONV92:%.*]] = zext i1 [[CMP91]] to i32
// SIMD-ONLY0-NEXT:    [[CONV93:%.*]] = trunc i32 [[CONV92]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV93]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL94:%.*]] = icmp ne i8 [[TMP62]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL94]], label [[IF_THEN95:%.*]], label [[IF_END96:%.*]]
// SIMD-ONLY0:       if.then95:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP63]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END96]]
// SIMD-ONLY0:       if.end96:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV97:%.*]] = sext i8 [[TMP64]] to i32
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV98:%.*]] = sext i8 [[TMP65]] to i32
// SIMD-ONLY0-NEXT:    [[CMP99:%.*]] = icmp eq i32 [[CONV97]], [[CONV98]]
// SIMD-ONLY0-NEXT:    [[CONV100:%.*]] = zext i1 [[CMP99]] to i32
// SIMD-ONLY0-NEXT:    [[CONV101:%.*]] = trunc i32 [[CONV100]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV101]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL102:%.*]] = icmp ne i8 [[TMP66]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL102]], label [[IF_THEN103:%.*]], label [[IF_ELSE104:%.*]]
// SIMD-ONLY0:       if.then103:
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP67]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END105:%.*]]
// SIMD-ONLY0:       if.else104:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP68]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END105]]
// SIMD-ONLY0:       if.end105:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV106:%.*]] = sext i8 [[TMP69]] to i32
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV107:%.*]] = sext i8 [[TMP70]] to i32
// SIMD-ONLY0-NEXT:    [[CMP108:%.*]] = icmp eq i32 [[CONV106]], [[CONV107]]
// SIMD-ONLY0-NEXT:    [[CONV109:%.*]] = zext i1 [[CMP108]] to i32
// SIMD-ONLY0-NEXT:    [[CONV110:%.*]] = trunc i32 [[CONV109]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV110]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL111:%.*]] = icmp ne i8 [[TMP71]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL111]], label [[IF_THEN112:%.*]], label [[IF_ELSE113:%.*]]
// SIMD-ONLY0:       if.then112:
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP72]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END114:%.*]]
// SIMD-ONLY0:       if.else113:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP73]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END114]]
// SIMD-ONLY0:       if.end114:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP74]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV115:%.*]] = sext i8 [[TMP75]] to i32
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV116:%.*]] = sext i8 [[TMP76]] to i32
// SIMD-ONLY0-NEXT:    [[CMP117:%.*]] = icmp sgt i32 [[CONV115]], [[CONV116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP117]], label [[IF_THEN119:%.*]], label [[IF_END120:%.*]]
// SIMD-ONLY0:       if.then119:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP77]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END120]]
// SIMD-ONLY0:       if.end120:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP78]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV121:%.*]] = sext i8 [[TMP79]] to i32
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV122:%.*]] = sext i8 [[TMP80]] to i32
// SIMD-ONLY0-NEXT:    [[CMP123:%.*]] = icmp sgt i32 [[CONV121]], [[CONV122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP123]], label [[IF_THEN125:%.*]], label [[IF_END126:%.*]]
// SIMD-ONLY0:       if.then125:
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP81]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END126]]
// SIMD-ONLY0:       if.end126:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP82]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV127:%.*]] = sext i8 [[TMP83]] to i32
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV128:%.*]] = sext i8 [[TMP84]] to i32
// SIMD-ONLY0-NEXT:    [[CMP129:%.*]] = icmp slt i32 [[CONV127]], [[CONV128]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP129]], label [[IF_THEN131:%.*]], label [[IF_END132:%.*]]
// SIMD-ONLY0:       if.then131:
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP85]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END132]]
// SIMD-ONLY0:       if.end132:
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP86]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV133:%.*]] = sext i8 [[TMP87]] to i32
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV134:%.*]] = sext i8 [[TMP88]] to i32
// SIMD-ONLY0-NEXT:    [[CMP135:%.*]] = icmp slt i32 [[CONV133]], [[CONV134]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP135]], label [[IF_THEN137:%.*]], label [[IF_END138:%.*]]
// SIMD-ONLY0:       if.then137:
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP89]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END138]]
// SIMD-ONLY0:       if.end138:
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP90]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV139:%.*]] = sext i8 [[TMP91]] to i32
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV140:%.*]] = sext i8 [[TMP92]] to i32
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i32 [[CONV139]], [[CONV140]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[IF_THEN143:%.*]], label [[IF_END144:%.*]]
// SIMD-ONLY0:       if.then143:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP93]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END144]]
// SIMD-ONLY0:       if.end144:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP94]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV145:%.*]] = sext i8 [[TMP95]] to i32
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV146:%.*]] = sext i8 [[TMP96]] to i32
// SIMD-ONLY0-NEXT:    [[CMP147:%.*]] = icmp eq i32 [[CONV145]], [[CONV146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP147]], label [[IF_THEN149:%.*]], label [[IF_END150:%.*]]
// SIMD-ONLY0:       if.then149:
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP97]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END150]]
// SIMD-ONLY0:       if.end150:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV151:%.*]] = sext i8 [[TMP98]] to i32
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV152:%.*]] = sext i8 [[TMP99]] to i32
// SIMD-ONLY0-NEXT:    [[CMP153:%.*]] = icmp sgt i32 [[CONV151]], [[CONV152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP153]], label [[IF_THEN155:%.*]], label [[IF_END156:%.*]]
// SIMD-ONLY0:       if.then155:
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP100]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END156]]
// SIMD-ONLY0:       if.end156:
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP101]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV157:%.*]] = sext i8 [[TMP102]] to i32
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV158:%.*]] = sext i8 [[TMP103]] to i32
// SIMD-ONLY0-NEXT:    [[CMP159:%.*]] = icmp sgt i32 [[CONV157]], [[CONV158]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP159]], label [[IF_THEN161:%.*]], label [[IF_END162:%.*]]
// SIMD-ONLY0:       if.then161:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP104]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END162]]
// SIMD-ONLY0:       if.end162:
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP105]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV163:%.*]] = sext i8 [[TMP106]] to i32
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV164:%.*]] = sext i8 [[TMP107]] to i32
// SIMD-ONLY0-NEXT:    [[CMP165:%.*]] = icmp slt i32 [[CONV163]], [[CONV164]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP165]], label [[IF_THEN167:%.*]], label [[IF_END168:%.*]]
// SIMD-ONLY0:       if.then167:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP108]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END168]]
// SIMD-ONLY0:       if.end168:
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP109]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV169:%.*]] = sext i8 [[TMP110]] to i32
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV170:%.*]] = sext i8 [[TMP111]] to i32
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp slt i32 [[CONV169]], [[CONV170]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[IF_THEN173:%.*]], label [[IF_END174:%.*]]
// SIMD-ONLY0:       if.then173:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP112]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END174]]
// SIMD-ONLY0:       if.end174:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP113]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV175:%.*]] = sext i8 [[TMP114]] to i32
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV176:%.*]] = sext i8 [[TMP115]] to i32
// SIMD-ONLY0-NEXT:    [[CMP177:%.*]] = icmp eq i32 [[CONV175]], [[CONV176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP177]], label [[IF_THEN179:%.*]], label [[IF_END180:%.*]]
// SIMD-ONLY0:       if.then179:
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP116]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END180]]
// SIMD-ONLY0:       if.end180:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP117]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV181:%.*]] = sext i8 [[TMP118]] to i32
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV182:%.*]] = sext i8 [[TMP119]] to i32
// SIMD-ONLY0-NEXT:    [[CMP183:%.*]] = icmp eq i32 [[CONV181]], [[CONV182]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP183]], label [[IF_THEN185:%.*]], label [[IF_END186:%.*]]
// SIMD-ONLY0:       if.then185:
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP120]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END186]]
// SIMD-ONLY0:       if.end186:
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP121]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV187:%.*]] = sext i8 [[TMP122]] to i32
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV188:%.*]] = sext i8 [[TMP123]] to i32
// SIMD-ONLY0-NEXT:    [[CMP189:%.*]] = icmp eq i32 [[CONV187]], [[CONV188]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP189]], label [[IF_THEN191:%.*]], label [[IF_ELSE192:%.*]]
// SIMD-ONLY0:       if.then191:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP124]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END193:%.*]]
// SIMD-ONLY0:       if.else192:
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP125]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END193]]
// SIMD-ONLY0:       if.end193:
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV194:%.*]] = sext i8 [[TMP126]] to i32
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV195:%.*]] = sext i8 [[TMP127]] to i32
// SIMD-ONLY0-NEXT:    [[CMP196:%.*]] = icmp eq i32 [[CONV194]], [[CONV195]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP196]], label [[IF_THEN198:%.*]], label [[IF_ELSE199:%.*]]
// SIMD-ONLY0:       if.then198:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP128]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END200:%.*]]
// SIMD-ONLY0:       if.else199:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP129]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END200]]
// SIMD-ONLY0:       if.end200:
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV201:%.*]] = sext i8 [[TMP130]] to i32
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV202:%.*]] = sext i8 [[TMP131]] to i32
// SIMD-ONLY0-NEXT:    [[CMP203:%.*]] = icmp eq i32 [[CONV201]], [[CONV202]]
// SIMD-ONLY0-NEXT:    [[CONV204:%.*]] = zext i1 [[CMP203]] to i32
// SIMD-ONLY0-NEXT:    [[CONV205:%.*]] = trunc i32 [[CONV204]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV205]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL206:%.*]] = icmp ne i8 [[TMP132]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL206]], label [[IF_THEN207:%.*]], label [[IF_END208:%.*]]
// SIMD-ONLY0:       if.then207:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP133]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END208]]
// SIMD-ONLY0:       if.end208:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV209:%.*]] = sext i8 [[TMP134]] to i32
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV210:%.*]] = sext i8 [[TMP135]] to i32
// SIMD-ONLY0-NEXT:    [[CMP211:%.*]] = icmp eq i32 [[CONV209]], [[CONV210]]
// SIMD-ONLY0-NEXT:    [[CONV212:%.*]] = zext i1 [[CMP211]] to i32
// SIMD-ONLY0-NEXT:    [[CONV213:%.*]] = trunc i32 [[CONV212]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV213]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL214:%.*]] = icmp ne i8 [[TMP136]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL214]], label [[IF_THEN215:%.*]], label [[IF_END216:%.*]]
// SIMD-ONLY0:       if.then215:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP137]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END216]]
// SIMD-ONLY0:       if.end216:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV217:%.*]] = sext i8 [[TMP138]] to i32
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV218:%.*]] = sext i8 [[TMP139]] to i32
// SIMD-ONLY0-NEXT:    [[CMP219:%.*]] = icmp eq i32 [[CONV217]], [[CONV218]]
// SIMD-ONLY0-NEXT:    [[CONV220:%.*]] = zext i1 [[CMP219]] to i32
// SIMD-ONLY0-NEXT:    [[CONV221:%.*]] = trunc i32 [[CONV220]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV221]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL222:%.*]] = icmp ne i8 [[TMP140]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL222]], label [[IF_THEN223:%.*]], label [[IF_ELSE224:%.*]]
// SIMD-ONLY0:       if.then223:
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP141]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END225:%.*]]
// SIMD-ONLY0:       if.else224:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP142]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END225]]
// SIMD-ONLY0:       if.end225:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV226:%.*]] = sext i8 [[TMP143]] to i32
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV227:%.*]] = sext i8 [[TMP144]] to i32
// SIMD-ONLY0-NEXT:    [[CMP228:%.*]] = icmp eq i32 [[CONV226]], [[CONV227]]
// SIMD-ONLY0-NEXT:    [[CONV229:%.*]] = zext i1 [[CMP228]] to i32
// SIMD-ONLY0-NEXT:    [[CONV230:%.*]] = trunc i32 [[CONV229]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV230]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL231:%.*]] = icmp ne i8 [[TMP145]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL231]], label [[IF_THEN232:%.*]], label [[IF_ELSE233:%.*]]
// SIMD-ONLY0:       if.then232:
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP146]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END234:%.*]]
// SIMD-ONLY0:       if.else233:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP147]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END234]]
// SIMD-ONLY0:       if.end234:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP148]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV235:%.*]] = sext i8 [[TMP149]] to i32
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV236:%.*]] = sext i8 [[TMP150]] to i32
// SIMD-ONLY0-NEXT:    [[CMP237:%.*]] = icmp sgt i32 [[CONV235]], [[CONV236]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP237]], label [[IF_THEN239:%.*]], label [[IF_END240:%.*]]
// SIMD-ONLY0:       if.then239:
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP151]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END240]]
// SIMD-ONLY0:       if.end240:
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP152]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV241:%.*]] = sext i8 [[TMP153]] to i32
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV242:%.*]] = sext i8 [[TMP154]] to i32
// SIMD-ONLY0-NEXT:    [[CMP243:%.*]] = icmp sgt i32 [[CONV241]], [[CONV242]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP243]], label [[IF_THEN245:%.*]], label [[IF_END246:%.*]]
// SIMD-ONLY0:       if.then245:
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP155]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END246]]
// SIMD-ONLY0:       if.end246:
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP156]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV247:%.*]] = sext i8 [[TMP157]] to i32
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV248:%.*]] = sext i8 [[TMP158]] to i32
// SIMD-ONLY0-NEXT:    [[CMP249:%.*]] = icmp slt i32 [[CONV247]], [[CONV248]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP249]], label [[IF_THEN251:%.*]], label [[IF_END252:%.*]]
// SIMD-ONLY0:       if.then251:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP159]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END252]]
// SIMD-ONLY0:       if.end252:
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP160]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV253:%.*]] = sext i8 [[TMP161]] to i32
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV254:%.*]] = sext i8 [[TMP162]] to i32
// SIMD-ONLY0-NEXT:    [[CMP255:%.*]] = icmp slt i32 [[CONV253]], [[CONV254]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP255]], label [[IF_THEN257:%.*]], label [[IF_END258:%.*]]
// SIMD-ONLY0:       if.then257:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP163]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END258]]
// SIMD-ONLY0:       if.end258:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP164]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV259:%.*]] = sext i8 [[TMP165]] to i32
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV260:%.*]] = sext i8 [[TMP166]] to i32
// SIMD-ONLY0-NEXT:    [[CMP261:%.*]] = icmp eq i32 [[CONV259]], [[CONV260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP261]], label [[IF_THEN263:%.*]], label [[IF_END264:%.*]]
// SIMD-ONLY0:       if.then263:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP167]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END264]]
// SIMD-ONLY0:       if.end264:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP168]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV265:%.*]] = sext i8 [[TMP169]] to i32
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV266:%.*]] = sext i8 [[TMP170]] to i32
// SIMD-ONLY0-NEXT:    [[CMP267:%.*]] = icmp eq i32 [[CONV265]], [[CONV266]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP267]], label [[IF_THEN269:%.*]], label [[IF_END270:%.*]]
// SIMD-ONLY0:       if.then269:
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP171]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END270]]
// SIMD-ONLY0:       if.end270:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV271:%.*]] = sext i8 [[TMP172]] to i32
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV272:%.*]] = sext i8 [[TMP173]] to i32
// SIMD-ONLY0-NEXT:    [[CMP273:%.*]] = icmp sgt i32 [[CONV271]], [[CONV272]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP273]], label [[IF_THEN275:%.*]], label [[IF_END276:%.*]]
// SIMD-ONLY0:       if.then275:
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP174]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END276]]
// SIMD-ONLY0:       if.end276:
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP175]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV277:%.*]] = sext i8 [[TMP176]] to i32
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV278:%.*]] = sext i8 [[TMP177]] to i32
// SIMD-ONLY0-NEXT:    [[CMP279:%.*]] = icmp sgt i32 [[CONV277]], [[CONV278]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP279]], label [[IF_THEN281:%.*]], label [[IF_END282:%.*]]
// SIMD-ONLY0:       if.then281:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP178]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END282]]
// SIMD-ONLY0:       if.end282:
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP179]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV283:%.*]] = sext i8 [[TMP180]] to i32
// SIMD-ONLY0-NEXT:    [[TMP181:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV284:%.*]] = sext i8 [[TMP181]] to i32
// SIMD-ONLY0-NEXT:    [[CMP285:%.*]] = icmp slt i32 [[CONV283]], [[CONV284]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP285]], label [[IF_THEN287:%.*]], label [[IF_END288:%.*]]
// SIMD-ONLY0:       if.then287:
// SIMD-ONLY0-NEXT:    [[TMP182:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP182]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END288]]
// SIMD-ONLY0:       if.end288:
// SIMD-ONLY0-NEXT:    [[TMP183:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP183]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP184:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV289:%.*]] = sext i8 [[TMP184]] to i32
// SIMD-ONLY0-NEXT:    [[TMP185:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV290:%.*]] = sext i8 [[TMP185]] to i32
// SIMD-ONLY0-NEXT:    [[CMP291:%.*]] = icmp slt i32 [[CONV289]], [[CONV290]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP291]], label [[IF_THEN293:%.*]], label [[IF_END294:%.*]]
// SIMD-ONLY0:       if.then293:
// SIMD-ONLY0-NEXT:    [[TMP186:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP186]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END294]]
// SIMD-ONLY0:       if.end294:
// SIMD-ONLY0-NEXT:    [[TMP187:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP187]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP188:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV295:%.*]] = sext i8 [[TMP188]] to i32
// SIMD-ONLY0-NEXT:    [[TMP189:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV296:%.*]] = sext i8 [[TMP189]] to i32
// SIMD-ONLY0-NEXT:    [[CMP297:%.*]] = icmp eq i32 [[CONV295]], [[CONV296]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP297]], label [[IF_THEN299:%.*]], label [[IF_END300:%.*]]
// SIMD-ONLY0:       if.then299:
// SIMD-ONLY0-NEXT:    [[TMP190:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP190]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END300]]
// SIMD-ONLY0:       if.end300:
// SIMD-ONLY0-NEXT:    [[TMP191:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP191]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP192:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV301:%.*]] = sext i8 [[TMP192]] to i32
// SIMD-ONLY0-NEXT:    [[TMP193:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV302:%.*]] = sext i8 [[TMP193]] to i32
// SIMD-ONLY0-NEXT:    [[CMP303:%.*]] = icmp eq i32 [[CONV301]], [[CONV302]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP303]], label [[IF_THEN305:%.*]], label [[IF_END306:%.*]]
// SIMD-ONLY0:       if.then305:
// SIMD-ONLY0-NEXT:    [[TMP194:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP194]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END306]]
// SIMD-ONLY0:       if.end306:
// SIMD-ONLY0-NEXT:    [[TMP195:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP195]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP196:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV307:%.*]] = sext i8 [[TMP196]] to i32
// SIMD-ONLY0-NEXT:    [[TMP197:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV308:%.*]] = sext i8 [[TMP197]] to i32
// SIMD-ONLY0-NEXT:    [[CMP309:%.*]] = icmp eq i32 [[CONV307]], [[CONV308]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP309]], label [[IF_THEN311:%.*]], label [[IF_ELSE312:%.*]]
// SIMD-ONLY0:       if.then311:
// SIMD-ONLY0-NEXT:    [[TMP198:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP198]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END313:%.*]]
// SIMD-ONLY0:       if.else312:
// SIMD-ONLY0-NEXT:    [[TMP199:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP199]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END313]]
// SIMD-ONLY0:       if.end313:
// SIMD-ONLY0-NEXT:    [[TMP200:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV314:%.*]] = sext i8 [[TMP200]] to i32
// SIMD-ONLY0-NEXT:    [[TMP201:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV315:%.*]] = sext i8 [[TMP201]] to i32
// SIMD-ONLY0-NEXT:    [[CMP316:%.*]] = icmp eq i32 [[CONV314]], [[CONV315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP316]], label [[IF_THEN318:%.*]], label [[IF_ELSE319:%.*]]
// SIMD-ONLY0:       if.then318:
// SIMD-ONLY0-NEXT:    [[TMP202:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP202]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END320:%.*]]
// SIMD-ONLY0:       if.else319:
// SIMD-ONLY0-NEXT:    [[TMP203:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP203]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END320]]
// SIMD-ONLY0:       if.end320:
// SIMD-ONLY0-NEXT:    [[TMP204:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV321:%.*]] = sext i8 [[TMP204]] to i32
// SIMD-ONLY0-NEXT:    [[TMP205:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV322:%.*]] = sext i8 [[TMP205]] to i32
// SIMD-ONLY0-NEXT:    [[CMP323:%.*]] = icmp eq i32 [[CONV321]], [[CONV322]]
// SIMD-ONLY0-NEXT:    [[CONV324:%.*]] = zext i1 [[CMP323]] to i32
// SIMD-ONLY0-NEXT:    [[CONV325:%.*]] = trunc i32 [[CONV324]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV325]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP206:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL326:%.*]] = icmp ne i8 [[TMP206]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL326]], label [[IF_THEN327:%.*]], label [[IF_END328:%.*]]
// SIMD-ONLY0:       if.then327:
// SIMD-ONLY0-NEXT:    [[TMP207:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP207]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END328]]
// SIMD-ONLY0:       if.end328:
// SIMD-ONLY0-NEXT:    [[TMP208:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV329:%.*]] = sext i8 [[TMP208]] to i32
// SIMD-ONLY0-NEXT:    [[TMP209:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV330:%.*]] = sext i8 [[TMP209]] to i32
// SIMD-ONLY0-NEXT:    [[CMP331:%.*]] = icmp eq i32 [[CONV329]], [[CONV330]]
// SIMD-ONLY0-NEXT:    [[CONV332:%.*]] = zext i1 [[CMP331]] to i32
// SIMD-ONLY0-NEXT:    [[CONV333:%.*]] = trunc i32 [[CONV332]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV333]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP210:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL334:%.*]] = icmp ne i8 [[TMP210]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL334]], label [[IF_THEN335:%.*]], label [[IF_END336:%.*]]
// SIMD-ONLY0:       if.then335:
// SIMD-ONLY0-NEXT:    [[TMP211:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP211]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END336]]
// SIMD-ONLY0:       if.end336:
// SIMD-ONLY0-NEXT:    [[TMP212:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV337:%.*]] = sext i8 [[TMP212]] to i32
// SIMD-ONLY0-NEXT:    [[TMP213:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV338:%.*]] = sext i8 [[TMP213]] to i32
// SIMD-ONLY0-NEXT:    [[CMP339:%.*]] = icmp eq i32 [[CONV337]], [[CONV338]]
// SIMD-ONLY0-NEXT:    [[CONV340:%.*]] = zext i1 [[CMP339]] to i32
// SIMD-ONLY0-NEXT:    [[CONV341:%.*]] = trunc i32 [[CONV340]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV341]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP214:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL342:%.*]] = icmp ne i8 [[TMP214]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL342]], label [[IF_THEN343:%.*]], label [[IF_ELSE344:%.*]]
// SIMD-ONLY0:       if.then343:
// SIMD-ONLY0-NEXT:    [[TMP215:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP215]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END345:%.*]]
// SIMD-ONLY0:       if.else344:
// SIMD-ONLY0-NEXT:    [[TMP216:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP216]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END345]]
// SIMD-ONLY0:       if.end345:
// SIMD-ONLY0-NEXT:    [[TMP217:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV346:%.*]] = sext i8 [[TMP217]] to i32
// SIMD-ONLY0-NEXT:    [[TMP218:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV347:%.*]] = sext i8 [[TMP218]] to i32
// SIMD-ONLY0-NEXT:    [[CMP348:%.*]] = icmp eq i32 [[CONV346]], [[CONV347]]
// SIMD-ONLY0-NEXT:    [[CONV349:%.*]] = zext i1 [[CMP348]] to i32
// SIMD-ONLY0-NEXT:    [[CONV350:%.*]] = trunc i32 [[CONV349]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV350]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP219:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL351:%.*]] = icmp ne i8 [[TMP219]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL351]], label [[IF_THEN352:%.*]], label [[IF_ELSE353:%.*]]
// SIMD-ONLY0:       if.then352:
// SIMD-ONLY0-NEXT:    [[TMP220:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP220]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END354:%.*]]
// SIMD-ONLY0:       if.else353:
// SIMD-ONLY0-NEXT:    [[TMP221:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP221]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END354]]
// SIMD-ONLY0:       if.end354:
// SIMD-ONLY0-NEXT:    [[TMP222:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP222]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP223:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV355:%.*]] = sext i8 [[TMP223]] to i32
// SIMD-ONLY0-NEXT:    [[TMP224:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV356:%.*]] = sext i8 [[TMP224]] to i32
// SIMD-ONLY0-NEXT:    [[CMP357:%.*]] = icmp sgt i32 [[CONV355]], [[CONV356]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP357]], label [[IF_THEN359:%.*]], label [[IF_END360:%.*]]
// SIMD-ONLY0:       if.then359:
// SIMD-ONLY0-NEXT:    [[TMP225:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP225]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END360]]
// SIMD-ONLY0:       if.end360:
// SIMD-ONLY0-NEXT:    [[TMP226:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP226]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP227:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV361:%.*]] = sext i8 [[TMP227]] to i32
// SIMD-ONLY0-NEXT:    [[TMP228:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV362:%.*]] = sext i8 [[TMP228]] to i32
// SIMD-ONLY0-NEXT:    [[CMP363:%.*]] = icmp sgt i32 [[CONV361]], [[CONV362]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP363]], label [[IF_THEN365:%.*]], label [[IF_END366:%.*]]
// SIMD-ONLY0:       if.then365:
// SIMD-ONLY0-NEXT:    [[TMP229:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP229]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END366]]
// SIMD-ONLY0:       if.end366:
// SIMD-ONLY0-NEXT:    [[TMP230:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP230]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP231:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV367:%.*]] = sext i8 [[TMP231]] to i32
// SIMD-ONLY0-NEXT:    [[TMP232:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV368:%.*]] = sext i8 [[TMP232]] to i32
// SIMD-ONLY0-NEXT:    [[CMP369:%.*]] = icmp slt i32 [[CONV367]], [[CONV368]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP369]], label [[IF_THEN371:%.*]], label [[IF_END372:%.*]]
// SIMD-ONLY0:       if.then371:
// SIMD-ONLY0-NEXT:    [[TMP233:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP233]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END372]]
// SIMD-ONLY0:       if.end372:
// SIMD-ONLY0-NEXT:    [[TMP234:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP234]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP235:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV373:%.*]] = sext i8 [[TMP235]] to i32
// SIMD-ONLY0-NEXT:    [[TMP236:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV374:%.*]] = sext i8 [[TMP236]] to i32
// SIMD-ONLY0-NEXT:    [[CMP375:%.*]] = icmp slt i32 [[CONV373]], [[CONV374]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP375]], label [[IF_THEN377:%.*]], label [[IF_END378:%.*]]
// SIMD-ONLY0:       if.then377:
// SIMD-ONLY0-NEXT:    [[TMP237:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP237]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END378]]
// SIMD-ONLY0:       if.end378:
// SIMD-ONLY0-NEXT:    [[TMP238:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP238]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP239:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV379:%.*]] = sext i8 [[TMP239]] to i32
// SIMD-ONLY0-NEXT:    [[TMP240:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV380:%.*]] = sext i8 [[TMP240]] to i32
// SIMD-ONLY0-NEXT:    [[CMP381:%.*]] = icmp eq i32 [[CONV379]], [[CONV380]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP381]], label [[IF_THEN383:%.*]], label [[IF_END384:%.*]]
// SIMD-ONLY0:       if.then383:
// SIMD-ONLY0-NEXT:    [[TMP241:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP241]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END384]]
// SIMD-ONLY0:       if.end384:
// SIMD-ONLY0-NEXT:    [[TMP242:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP242]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP243:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV385:%.*]] = sext i8 [[TMP243]] to i32
// SIMD-ONLY0-NEXT:    [[TMP244:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV386:%.*]] = sext i8 [[TMP244]] to i32
// SIMD-ONLY0-NEXT:    [[CMP387:%.*]] = icmp eq i32 [[CONV385]], [[CONV386]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP387]], label [[IF_THEN389:%.*]], label [[IF_END390:%.*]]
// SIMD-ONLY0:       if.then389:
// SIMD-ONLY0-NEXT:    [[TMP245:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP245]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END390]]
// SIMD-ONLY0:       if.end390:
// SIMD-ONLY0-NEXT:    [[TMP246:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV391:%.*]] = sext i8 [[TMP246]] to i32
// SIMD-ONLY0-NEXT:    [[TMP247:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV392:%.*]] = sext i8 [[TMP247]] to i32
// SIMD-ONLY0-NEXT:    [[CMP393:%.*]] = icmp sgt i32 [[CONV391]], [[CONV392]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP393]], label [[IF_THEN395:%.*]], label [[IF_END396:%.*]]
// SIMD-ONLY0:       if.then395:
// SIMD-ONLY0-NEXT:    [[TMP248:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP248]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END396]]
// SIMD-ONLY0:       if.end396:
// SIMD-ONLY0-NEXT:    [[TMP249:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP249]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP250:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV397:%.*]] = sext i8 [[TMP250]] to i32
// SIMD-ONLY0-NEXT:    [[TMP251:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV398:%.*]] = sext i8 [[TMP251]] to i32
// SIMD-ONLY0-NEXT:    [[CMP399:%.*]] = icmp sgt i32 [[CONV397]], [[CONV398]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP399]], label [[IF_THEN401:%.*]], label [[IF_END402:%.*]]
// SIMD-ONLY0:       if.then401:
// SIMD-ONLY0-NEXT:    [[TMP252:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP252]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END402]]
// SIMD-ONLY0:       if.end402:
// SIMD-ONLY0-NEXT:    [[TMP253:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP253]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP254:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV403:%.*]] = sext i8 [[TMP254]] to i32
// SIMD-ONLY0-NEXT:    [[TMP255:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV404:%.*]] = sext i8 [[TMP255]] to i32
// SIMD-ONLY0-NEXT:    [[CMP405:%.*]] = icmp slt i32 [[CONV403]], [[CONV404]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP405]], label [[IF_THEN407:%.*]], label [[IF_END408:%.*]]
// SIMD-ONLY0:       if.then407:
// SIMD-ONLY0-NEXT:    [[TMP256:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP256]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END408]]
// SIMD-ONLY0:       if.end408:
// SIMD-ONLY0-NEXT:    [[TMP257:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP257]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP258:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV409:%.*]] = sext i8 [[TMP258]] to i32
// SIMD-ONLY0-NEXT:    [[TMP259:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV410:%.*]] = sext i8 [[TMP259]] to i32
// SIMD-ONLY0-NEXT:    [[CMP411:%.*]] = icmp slt i32 [[CONV409]], [[CONV410]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP411]], label [[IF_THEN413:%.*]], label [[IF_END414:%.*]]
// SIMD-ONLY0:       if.then413:
// SIMD-ONLY0-NEXT:    [[TMP260:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP260]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END414]]
// SIMD-ONLY0:       if.end414:
// SIMD-ONLY0-NEXT:    [[TMP261:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP261]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP262:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV415:%.*]] = sext i8 [[TMP262]] to i32
// SIMD-ONLY0-NEXT:    [[TMP263:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV416:%.*]] = sext i8 [[TMP263]] to i32
// SIMD-ONLY0-NEXT:    [[CMP417:%.*]] = icmp eq i32 [[CONV415]], [[CONV416]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP417]], label [[IF_THEN419:%.*]], label [[IF_END420:%.*]]
// SIMD-ONLY0:       if.then419:
// SIMD-ONLY0-NEXT:    [[TMP264:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP264]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END420]]
// SIMD-ONLY0:       if.end420:
// SIMD-ONLY0-NEXT:    [[TMP265:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP265]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP266:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV421:%.*]] = sext i8 [[TMP266]] to i32
// SIMD-ONLY0-NEXT:    [[TMP267:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV422:%.*]] = sext i8 [[TMP267]] to i32
// SIMD-ONLY0-NEXT:    [[CMP423:%.*]] = icmp eq i32 [[CONV421]], [[CONV422]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP423]], label [[IF_THEN425:%.*]], label [[IF_END426:%.*]]
// SIMD-ONLY0:       if.then425:
// SIMD-ONLY0-NEXT:    [[TMP268:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP268]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END426]]
// SIMD-ONLY0:       if.end426:
// SIMD-ONLY0-NEXT:    [[TMP269:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP269]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP270:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV427:%.*]] = sext i8 [[TMP270]] to i32
// SIMD-ONLY0-NEXT:    [[TMP271:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV428:%.*]] = sext i8 [[TMP271]] to i32
// SIMD-ONLY0-NEXT:    [[CMP429:%.*]] = icmp eq i32 [[CONV427]], [[CONV428]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP429]], label [[IF_THEN431:%.*]], label [[IF_ELSE432:%.*]]
// SIMD-ONLY0:       if.then431:
// SIMD-ONLY0-NEXT:    [[TMP272:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP272]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END433:%.*]]
// SIMD-ONLY0:       if.else432:
// SIMD-ONLY0-NEXT:    [[TMP273:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP273]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END433]]
// SIMD-ONLY0:       if.end433:
// SIMD-ONLY0-NEXT:    [[TMP274:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV434:%.*]] = sext i8 [[TMP274]] to i32
// SIMD-ONLY0-NEXT:    [[TMP275:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV435:%.*]] = sext i8 [[TMP275]] to i32
// SIMD-ONLY0-NEXT:    [[CMP436:%.*]] = icmp eq i32 [[CONV434]], [[CONV435]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP436]], label [[IF_THEN438:%.*]], label [[IF_ELSE439:%.*]]
// SIMD-ONLY0:       if.then438:
// SIMD-ONLY0-NEXT:    [[TMP276:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP276]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END440:%.*]]
// SIMD-ONLY0:       if.else439:
// SIMD-ONLY0-NEXT:    [[TMP277:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP277]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END440]]
// SIMD-ONLY0:       if.end440:
// SIMD-ONLY0-NEXT:    [[TMP278:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV441:%.*]] = sext i8 [[TMP278]] to i32
// SIMD-ONLY0-NEXT:    [[TMP279:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV442:%.*]] = sext i8 [[TMP279]] to i32
// SIMD-ONLY0-NEXT:    [[CMP443:%.*]] = icmp eq i32 [[CONV441]], [[CONV442]]
// SIMD-ONLY0-NEXT:    [[CONV444:%.*]] = zext i1 [[CMP443]] to i32
// SIMD-ONLY0-NEXT:    [[CONV445:%.*]] = trunc i32 [[CONV444]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV445]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP280:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL446:%.*]] = icmp ne i8 [[TMP280]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL446]], label [[IF_THEN447:%.*]], label [[IF_END448:%.*]]
// SIMD-ONLY0:       if.then447:
// SIMD-ONLY0-NEXT:    [[TMP281:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP281]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END448]]
// SIMD-ONLY0:       if.end448:
// SIMD-ONLY0-NEXT:    [[TMP282:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV449:%.*]] = sext i8 [[TMP282]] to i32
// SIMD-ONLY0-NEXT:    [[TMP283:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV450:%.*]] = sext i8 [[TMP283]] to i32
// SIMD-ONLY0-NEXT:    [[CMP451:%.*]] = icmp eq i32 [[CONV449]], [[CONV450]]
// SIMD-ONLY0-NEXT:    [[CONV452:%.*]] = zext i1 [[CMP451]] to i32
// SIMD-ONLY0-NEXT:    [[CONV453:%.*]] = trunc i32 [[CONV452]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV453]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP284:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL454:%.*]] = icmp ne i8 [[TMP284]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL454]], label [[IF_THEN455:%.*]], label [[IF_END456:%.*]]
// SIMD-ONLY0:       if.then455:
// SIMD-ONLY0-NEXT:    [[TMP285:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP285]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END456]]
// SIMD-ONLY0:       if.end456:
// SIMD-ONLY0-NEXT:    [[TMP286:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV457:%.*]] = sext i8 [[TMP286]] to i32
// SIMD-ONLY0-NEXT:    [[TMP287:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV458:%.*]] = sext i8 [[TMP287]] to i32
// SIMD-ONLY0-NEXT:    [[CMP459:%.*]] = icmp eq i32 [[CONV457]], [[CONV458]]
// SIMD-ONLY0-NEXT:    [[CONV460:%.*]] = zext i1 [[CMP459]] to i32
// SIMD-ONLY0-NEXT:    [[CONV461:%.*]] = trunc i32 [[CONV460]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV461]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP288:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL462:%.*]] = icmp ne i8 [[TMP288]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL462]], label [[IF_THEN463:%.*]], label [[IF_ELSE464:%.*]]
// SIMD-ONLY0:       if.then463:
// SIMD-ONLY0-NEXT:    [[TMP289:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP289]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END465:%.*]]
// SIMD-ONLY0:       if.else464:
// SIMD-ONLY0-NEXT:    [[TMP290:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP290]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END465]]
// SIMD-ONLY0:       if.end465:
// SIMD-ONLY0-NEXT:    [[TMP291:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV466:%.*]] = sext i8 [[TMP291]] to i32
// SIMD-ONLY0-NEXT:    [[TMP292:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV467:%.*]] = sext i8 [[TMP292]] to i32
// SIMD-ONLY0-NEXT:    [[CMP468:%.*]] = icmp eq i32 [[CONV466]], [[CONV467]]
// SIMD-ONLY0-NEXT:    [[CONV469:%.*]] = zext i1 [[CMP468]] to i32
// SIMD-ONLY0-NEXT:    [[CONV470:%.*]] = trunc i32 [[CONV469]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV470]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP293:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL471:%.*]] = icmp ne i8 [[TMP293]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL471]], label [[IF_THEN472:%.*]], label [[IF_ELSE473:%.*]]
// SIMD-ONLY0:       if.then472:
// SIMD-ONLY0-NEXT:    [[TMP294:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP294]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END474:%.*]]
// SIMD-ONLY0:       if.else473:
// SIMD-ONLY0-NEXT:    [[TMP295:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP295]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END474]]
// SIMD-ONLY0:       if.end474:
// SIMD-ONLY0-NEXT:    [[TMP296:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP296]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP297:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV475:%.*]] = sext i8 [[TMP297]] to i32
// SIMD-ONLY0-NEXT:    [[TMP298:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV476:%.*]] = sext i8 [[TMP298]] to i32
// SIMD-ONLY0-NEXT:    [[CMP477:%.*]] = icmp sgt i32 [[CONV475]], [[CONV476]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP477]], label [[IF_THEN479:%.*]], label [[IF_END480:%.*]]
// SIMD-ONLY0:       if.then479:
// SIMD-ONLY0-NEXT:    [[TMP299:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP299]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END480]]
// SIMD-ONLY0:       if.end480:
// SIMD-ONLY0-NEXT:    [[TMP300:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP300]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP301:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV481:%.*]] = sext i8 [[TMP301]] to i32
// SIMD-ONLY0-NEXT:    [[TMP302:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV482:%.*]] = sext i8 [[TMP302]] to i32
// SIMD-ONLY0-NEXT:    [[CMP483:%.*]] = icmp sgt i32 [[CONV481]], [[CONV482]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP483]], label [[IF_THEN485:%.*]], label [[IF_END486:%.*]]
// SIMD-ONLY0:       if.then485:
// SIMD-ONLY0-NEXT:    [[TMP303:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP303]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END486]]
// SIMD-ONLY0:       if.end486:
// SIMD-ONLY0-NEXT:    [[TMP304:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP304]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP305:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV487:%.*]] = sext i8 [[TMP305]] to i32
// SIMD-ONLY0-NEXT:    [[TMP306:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV488:%.*]] = sext i8 [[TMP306]] to i32
// SIMD-ONLY0-NEXT:    [[CMP489:%.*]] = icmp slt i32 [[CONV487]], [[CONV488]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP489]], label [[IF_THEN491:%.*]], label [[IF_END492:%.*]]
// SIMD-ONLY0:       if.then491:
// SIMD-ONLY0-NEXT:    [[TMP307:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP307]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END492]]
// SIMD-ONLY0:       if.end492:
// SIMD-ONLY0-NEXT:    [[TMP308:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP308]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP309:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV493:%.*]] = sext i8 [[TMP309]] to i32
// SIMD-ONLY0-NEXT:    [[TMP310:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV494:%.*]] = sext i8 [[TMP310]] to i32
// SIMD-ONLY0-NEXT:    [[CMP495:%.*]] = icmp slt i32 [[CONV493]], [[CONV494]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP495]], label [[IF_THEN497:%.*]], label [[IF_END498:%.*]]
// SIMD-ONLY0:       if.then497:
// SIMD-ONLY0-NEXT:    [[TMP311:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP311]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END498]]
// SIMD-ONLY0:       if.end498:
// SIMD-ONLY0-NEXT:    [[TMP312:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP312]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP313:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV499:%.*]] = sext i8 [[TMP313]] to i32
// SIMD-ONLY0-NEXT:    [[TMP314:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV500:%.*]] = sext i8 [[TMP314]] to i32
// SIMD-ONLY0-NEXT:    [[CMP501:%.*]] = icmp eq i32 [[CONV499]], [[CONV500]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP501]], label [[IF_THEN503:%.*]], label [[IF_END504:%.*]]
// SIMD-ONLY0:       if.then503:
// SIMD-ONLY0-NEXT:    [[TMP315:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP315]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END504]]
// SIMD-ONLY0:       if.end504:
// SIMD-ONLY0-NEXT:    [[TMP316:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP316]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP317:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV505:%.*]] = sext i8 [[TMP317]] to i32
// SIMD-ONLY0-NEXT:    [[TMP318:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV506:%.*]] = sext i8 [[TMP318]] to i32
// SIMD-ONLY0-NEXT:    [[CMP507:%.*]] = icmp eq i32 [[CONV505]], [[CONV506]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP507]], label [[IF_THEN509:%.*]], label [[IF_END510:%.*]]
// SIMD-ONLY0:       if.then509:
// SIMD-ONLY0-NEXT:    [[TMP319:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP319]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END510]]
// SIMD-ONLY0:       if.end510:
// SIMD-ONLY0-NEXT:    [[TMP320:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV511:%.*]] = sext i8 [[TMP320]] to i32
// SIMD-ONLY0-NEXT:    [[TMP321:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV512:%.*]] = sext i8 [[TMP321]] to i32
// SIMD-ONLY0-NEXT:    [[CMP513:%.*]] = icmp sgt i32 [[CONV511]], [[CONV512]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP513]], label [[IF_THEN515:%.*]], label [[IF_END516:%.*]]
// SIMD-ONLY0:       if.then515:
// SIMD-ONLY0-NEXT:    [[TMP322:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP322]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END516]]
// SIMD-ONLY0:       if.end516:
// SIMD-ONLY0-NEXT:    [[TMP323:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP323]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP324:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV517:%.*]] = sext i8 [[TMP324]] to i32
// SIMD-ONLY0-NEXT:    [[TMP325:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV518:%.*]] = sext i8 [[TMP325]] to i32
// SIMD-ONLY0-NEXT:    [[CMP519:%.*]] = icmp sgt i32 [[CONV517]], [[CONV518]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP519]], label [[IF_THEN521:%.*]], label [[IF_END522:%.*]]
// SIMD-ONLY0:       if.then521:
// SIMD-ONLY0-NEXT:    [[TMP326:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP326]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END522]]
// SIMD-ONLY0:       if.end522:
// SIMD-ONLY0-NEXT:    [[TMP327:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP327]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP328:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV523:%.*]] = sext i8 [[TMP328]] to i32
// SIMD-ONLY0-NEXT:    [[TMP329:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV524:%.*]] = sext i8 [[TMP329]] to i32
// SIMD-ONLY0-NEXT:    [[CMP525:%.*]] = icmp slt i32 [[CONV523]], [[CONV524]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP525]], label [[IF_THEN527:%.*]], label [[IF_END528:%.*]]
// SIMD-ONLY0:       if.then527:
// SIMD-ONLY0-NEXT:    [[TMP330:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP330]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END528]]
// SIMD-ONLY0:       if.end528:
// SIMD-ONLY0-NEXT:    [[TMP331:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP331]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP332:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV529:%.*]] = sext i8 [[TMP332]] to i32
// SIMD-ONLY0-NEXT:    [[TMP333:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV530:%.*]] = sext i8 [[TMP333]] to i32
// SIMD-ONLY0-NEXT:    [[CMP531:%.*]] = icmp slt i32 [[CONV529]], [[CONV530]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP531]], label [[IF_THEN533:%.*]], label [[IF_END534:%.*]]
// SIMD-ONLY0:       if.then533:
// SIMD-ONLY0-NEXT:    [[TMP334:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP334]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END534]]
// SIMD-ONLY0:       if.end534:
// SIMD-ONLY0-NEXT:    [[TMP335:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP335]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP336:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV535:%.*]] = sext i8 [[TMP336]] to i32
// SIMD-ONLY0-NEXT:    [[TMP337:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV536:%.*]] = sext i8 [[TMP337]] to i32
// SIMD-ONLY0-NEXT:    [[CMP537:%.*]] = icmp eq i32 [[CONV535]], [[CONV536]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP537]], label [[IF_THEN539:%.*]], label [[IF_END540:%.*]]
// SIMD-ONLY0:       if.then539:
// SIMD-ONLY0-NEXT:    [[TMP338:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP338]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END540]]
// SIMD-ONLY0:       if.end540:
// SIMD-ONLY0-NEXT:    [[TMP339:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP339]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP340:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV541:%.*]] = sext i8 [[TMP340]] to i32
// SIMD-ONLY0-NEXT:    [[TMP341:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV542:%.*]] = sext i8 [[TMP341]] to i32
// SIMD-ONLY0-NEXT:    [[CMP543:%.*]] = icmp eq i32 [[CONV541]], [[CONV542]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP543]], label [[IF_THEN545:%.*]], label [[IF_END546:%.*]]
// SIMD-ONLY0:       if.then545:
// SIMD-ONLY0-NEXT:    [[TMP342:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP342]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END546]]
// SIMD-ONLY0:       if.end546:
// SIMD-ONLY0-NEXT:    [[TMP343:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP343]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP344:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV547:%.*]] = sext i8 [[TMP344]] to i32
// SIMD-ONLY0-NEXT:    [[TMP345:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV548:%.*]] = sext i8 [[TMP345]] to i32
// SIMD-ONLY0-NEXT:    [[CMP549:%.*]] = icmp eq i32 [[CONV547]], [[CONV548]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP549]], label [[IF_THEN551:%.*]], label [[IF_ELSE552:%.*]]
// SIMD-ONLY0:       if.then551:
// SIMD-ONLY0-NEXT:    [[TMP346:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP346]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END553:%.*]]
// SIMD-ONLY0:       if.else552:
// SIMD-ONLY0-NEXT:    [[TMP347:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP347]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END553]]
// SIMD-ONLY0:       if.end553:
// SIMD-ONLY0-NEXT:    [[TMP348:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV554:%.*]] = sext i8 [[TMP348]] to i32
// SIMD-ONLY0-NEXT:    [[TMP349:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV555:%.*]] = sext i8 [[TMP349]] to i32
// SIMD-ONLY0-NEXT:    [[CMP556:%.*]] = icmp eq i32 [[CONV554]], [[CONV555]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP556]], label [[IF_THEN558:%.*]], label [[IF_ELSE559:%.*]]
// SIMD-ONLY0:       if.then558:
// SIMD-ONLY0-NEXT:    [[TMP350:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP350]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END560:%.*]]
// SIMD-ONLY0:       if.else559:
// SIMD-ONLY0-NEXT:    [[TMP351:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP351]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END560]]
// SIMD-ONLY0:       if.end560:
// SIMD-ONLY0-NEXT:    [[TMP352:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV561:%.*]] = sext i8 [[TMP352]] to i32
// SIMD-ONLY0-NEXT:    [[TMP353:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV562:%.*]] = sext i8 [[TMP353]] to i32
// SIMD-ONLY0-NEXT:    [[CMP563:%.*]] = icmp eq i32 [[CONV561]], [[CONV562]]
// SIMD-ONLY0-NEXT:    [[CONV564:%.*]] = zext i1 [[CMP563]] to i32
// SIMD-ONLY0-NEXT:    [[CONV565:%.*]] = trunc i32 [[CONV564]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV565]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP354:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL566:%.*]] = icmp ne i8 [[TMP354]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL566]], label [[IF_THEN567:%.*]], label [[IF_END568:%.*]]
// SIMD-ONLY0:       if.then567:
// SIMD-ONLY0-NEXT:    [[TMP355:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP355]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END568]]
// SIMD-ONLY0:       if.end568:
// SIMD-ONLY0-NEXT:    [[TMP356:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV569:%.*]] = sext i8 [[TMP356]] to i32
// SIMD-ONLY0-NEXT:    [[TMP357:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV570:%.*]] = sext i8 [[TMP357]] to i32
// SIMD-ONLY0-NEXT:    [[CMP571:%.*]] = icmp eq i32 [[CONV569]], [[CONV570]]
// SIMD-ONLY0-NEXT:    [[CONV572:%.*]] = zext i1 [[CMP571]] to i32
// SIMD-ONLY0-NEXT:    [[CONV573:%.*]] = trunc i32 [[CONV572]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV573]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP358:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL574:%.*]] = icmp ne i8 [[TMP358]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL574]], label [[IF_THEN575:%.*]], label [[IF_END576:%.*]]
// SIMD-ONLY0:       if.then575:
// SIMD-ONLY0-NEXT:    [[TMP359:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP359]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END576]]
// SIMD-ONLY0:       if.end576:
// SIMD-ONLY0-NEXT:    [[TMP360:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV577:%.*]] = sext i8 [[TMP360]] to i32
// SIMD-ONLY0-NEXT:    [[TMP361:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV578:%.*]] = sext i8 [[TMP361]] to i32
// SIMD-ONLY0-NEXT:    [[CMP579:%.*]] = icmp eq i32 [[CONV577]], [[CONV578]]
// SIMD-ONLY0-NEXT:    [[CONV580:%.*]] = zext i1 [[CMP579]] to i32
// SIMD-ONLY0-NEXT:    [[CONV581:%.*]] = trunc i32 [[CONV580]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV581]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP362:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL582:%.*]] = icmp ne i8 [[TMP362]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL582]], label [[IF_THEN583:%.*]], label [[IF_ELSE584:%.*]]
// SIMD-ONLY0:       if.then583:
// SIMD-ONLY0-NEXT:    [[TMP363:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP363]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END585:%.*]]
// SIMD-ONLY0:       if.else584:
// SIMD-ONLY0-NEXT:    [[TMP364:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP364]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END585]]
// SIMD-ONLY0:       if.end585:
// SIMD-ONLY0-NEXT:    [[TMP365:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV586:%.*]] = sext i8 [[TMP365]] to i32
// SIMD-ONLY0-NEXT:    [[TMP366:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV587:%.*]] = sext i8 [[TMP366]] to i32
// SIMD-ONLY0-NEXT:    [[CMP588:%.*]] = icmp eq i32 [[CONV586]], [[CONV587]]
// SIMD-ONLY0-NEXT:    [[CONV589:%.*]] = zext i1 [[CMP588]] to i32
// SIMD-ONLY0-NEXT:    [[CONV590:%.*]] = trunc i32 [[CONV589]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV590]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP367:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL591:%.*]] = icmp ne i8 [[TMP367]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL591]], label [[IF_THEN592:%.*]], label [[IF_ELSE593:%.*]]
// SIMD-ONLY0:       if.then592:
// SIMD-ONLY0-NEXT:    [[TMP368:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP368]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END594:%.*]]
// SIMD-ONLY0:       if.else593:
// SIMD-ONLY0-NEXT:    [[TMP369:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP369]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END594]]
// SIMD-ONLY0:       if.end594:
// SIMD-ONLY0-NEXT:    [[TMP370:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP370]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP371:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV595:%.*]] = sext i8 [[TMP371]] to i32
// SIMD-ONLY0-NEXT:    [[TMP372:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV596:%.*]] = sext i8 [[TMP372]] to i32
// SIMD-ONLY0-NEXT:    [[CMP597:%.*]] = icmp sgt i32 [[CONV595]], [[CONV596]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP597]], label [[IF_THEN599:%.*]], label [[IF_END600:%.*]]
// SIMD-ONLY0:       if.then599:
// SIMD-ONLY0-NEXT:    [[TMP373:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP373]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END600]]
// SIMD-ONLY0:       if.end600:
// SIMD-ONLY0-NEXT:    [[TMP374:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP374]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP375:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV601:%.*]] = sext i8 [[TMP375]] to i32
// SIMD-ONLY0-NEXT:    [[TMP376:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV602:%.*]] = sext i8 [[TMP376]] to i32
// SIMD-ONLY0-NEXT:    [[CMP603:%.*]] = icmp sgt i32 [[CONV601]], [[CONV602]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP603]], label [[IF_THEN605:%.*]], label [[IF_END606:%.*]]
// SIMD-ONLY0:       if.then605:
// SIMD-ONLY0-NEXT:    [[TMP377:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP377]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END606]]
// SIMD-ONLY0:       if.end606:
// SIMD-ONLY0-NEXT:    [[TMP378:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP378]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP379:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV607:%.*]] = sext i8 [[TMP379]] to i32
// SIMD-ONLY0-NEXT:    [[TMP380:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV608:%.*]] = sext i8 [[TMP380]] to i32
// SIMD-ONLY0-NEXT:    [[CMP609:%.*]] = icmp slt i32 [[CONV607]], [[CONV608]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP609]], label [[IF_THEN611:%.*]], label [[IF_END612:%.*]]
// SIMD-ONLY0:       if.then611:
// SIMD-ONLY0-NEXT:    [[TMP381:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP381]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END612]]
// SIMD-ONLY0:       if.end612:
// SIMD-ONLY0-NEXT:    [[TMP382:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP382]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP383:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV613:%.*]] = sext i8 [[TMP383]] to i32
// SIMD-ONLY0-NEXT:    [[TMP384:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV614:%.*]] = sext i8 [[TMP384]] to i32
// SIMD-ONLY0-NEXT:    [[CMP615:%.*]] = icmp slt i32 [[CONV613]], [[CONV614]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP615]], label [[IF_THEN617:%.*]], label [[IF_END618:%.*]]
// SIMD-ONLY0:       if.then617:
// SIMD-ONLY0-NEXT:    [[TMP385:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP385]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END618]]
// SIMD-ONLY0:       if.end618:
// SIMD-ONLY0-NEXT:    [[TMP386:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP386]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP387:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV619:%.*]] = sext i8 [[TMP387]] to i32
// SIMD-ONLY0-NEXT:    [[TMP388:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV620:%.*]] = sext i8 [[TMP388]] to i32
// SIMD-ONLY0-NEXT:    [[CMP621:%.*]] = icmp eq i32 [[CONV619]], [[CONV620]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP621]], label [[IF_THEN623:%.*]], label [[IF_END624:%.*]]
// SIMD-ONLY0:       if.then623:
// SIMD-ONLY0-NEXT:    [[TMP389:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP389]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END624]]
// SIMD-ONLY0:       if.end624:
// SIMD-ONLY0-NEXT:    [[TMP390:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP390]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP391:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV625:%.*]] = sext i8 [[TMP391]] to i32
// SIMD-ONLY0-NEXT:    [[TMP392:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV626:%.*]] = sext i8 [[TMP392]] to i32
// SIMD-ONLY0-NEXT:    [[CMP627:%.*]] = icmp eq i32 [[CONV625]], [[CONV626]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP627]], label [[IF_THEN629:%.*]], label [[IF_END630:%.*]]
// SIMD-ONLY0:       if.then629:
// SIMD-ONLY0-NEXT:    [[TMP393:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP393]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END630]]
// SIMD-ONLY0:       if.end630:
// SIMD-ONLY0-NEXT:    [[TMP394:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV631:%.*]] = sext i8 [[TMP394]] to i32
// SIMD-ONLY0-NEXT:    [[TMP395:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV632:%.*]] = sext i8 [[TMP395]] to i32
// SIMD-ONLY0-NEXT:    [[CMP633:%.*]] = icmp sgt i32 [[CONV631]], [[CONV632]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP633]], label [[IF_THEN635:%.*]], label [[IF_END636:%.*]]
// SIMD-ONLY0:       if.then635:
// SIMD-ONLY0-NEXT:    [[TMP396:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP396]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END636]]
// SIMD-ONLY0:       if.end636:
// SIMD-ONLY0-NEXT:    [[TMP397:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP397]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP398:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV637:%.*]] = sext i8 [[TMP398]] to i32
// SIMD-ONLY0-NEXT:    [[TMP399:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV638:%.*]] = sext i8 [[TMP399]] to i32
// SIMD-ONLY0-NEXT:    [[CMP639:%.*]] = icmp sgt i32 [[CONV637]], [[CONV638]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP639]], label [[IF_THEN641:%.*]], label [[IF_END642:%.*]]
// SIMD-ONLY0:       if.then641:
// SIMD-ONLY0-NEXT:    [[TMP400:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP400]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END642]]
// SIMD-ONLY0:       if.end642:
// SIMD-ONLY0-NEXT:    [[TMP401:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP401]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP402:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV643:%.*]] = sext i8 [[TMP402]] to i32
// SIMD-ONLY0-NEXT:    [[TMP403:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV644:%.*]] = sext i8 [[TMP403]] to i32
// SIMD-ONLY0-NEXT:    [[CMP645:%.*]] = icmp slt i32 [[CONV643]], [[CONV644]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP645]], label [[IF_THEN647:%.*]], label [[IF_END648:%.*]]
// SIMD-ONLY0:       if.then647:
// SIMD-ONLY0-NEXT:    [[TMP404:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP404]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END648]]
// SIMD-ONLY0:       if.end648:
// SIMD-ONLY0-NEXT:    [[TMP405:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP405]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP406:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV649:%.*]] = sext i8 [[TMP406]] to i32
// SIMD-ONLY0-NEXT:    [[TMP407:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV650:%.*]] = sext i8 [[TMP407]] to i32
// SIMD-ONLY0-NEXT:    [[CMP651:%.*]] = icmp slt i32 [[CONV649]], [[CONV650]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP651]], label [[IF_THEN653:%.*]], label [[IF_END654:%.*]]
// SIMD-ONLY0:       if.then653:
// SIMD-ONLY0-NEXT:    [[TMP408:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP408]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END654]]
// SIMD-ONLY0:       if.end654:
// SIMD-ONLY0-NEXT:    [[TMP409:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP409]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP410:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV655:%.*]] = sext i8 [[TMP410]] to i32
// SIMD-ONLY0-NEXT:    [[TMP411:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV656:%.*]] = sext i8 [[TMP411]] to i32
// SIMD-ONLY0-NEXT:    [[CMP657:%.*]] = icmp eq i32 [[CONV655]], [[CONV656]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP657]], label [[IF_THEN659:%.*]], label [[IF_END660:%.*]]
// SIMD-ONLY0:       if.then659:
// SIMD-ONLY0-NEXT:    [[TMP412:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP412]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END660]]
// SIMD-ONLY0:       if.end660:
// SIMD-ONLY0-NEXT:    [[TMP413:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP413]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP414:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV661:%.*]] = sext i8 [[TMP414]] to i32
// SIMD-ONLY0-NEXT:    [[TMP415:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV662:%.*]] = sext i8 [[TMP415]] to i32
// SIMD-ONLY0-NEXT:    [[CMP663:%.*]] = icmp eq i32 [[CONV661]], [[CONV662]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP663]], label [[IF_THEN665:%.*]], label [[IF_END666:%.*]]
// SIMD-ONLY0:       if.then665:
// SIMD-ONLY0-NEXT:    [[TMP416:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP416]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END666]]
// SIMD-ONLY0:       if.end666:
// SIMD-ONLY0-NEXT:    [[TMP417:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP417]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP418:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV667:%.*]] = sext i8 [[TMP418]] to i32
// SIMD-ONLY0-NEXT:    [[TMP419:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV668:%.*]] = sext i8 [[TMP419]] to i32
// SIMD-ONLY0-NEXT:    [[CMP669:%.*]] = icmp eq i32 [[CONV667]], [[CONV668]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP669]], label [[IF_THEN671:%.*]], label [[IF_ELSE672:%.*]]
// SIMD-ONLY0:       if.then671:
// SIMD-ONLY0-NEXT:    [[TMP420:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP420]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END673:%.*]]
// SIMD-ONLY0:       if.else672:
// SIMD-ONLY0-NEXT:    [[TMP421:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP421]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END673]]
// SIMD-ONLY0:       if.end673:
// SIMD-ONLY0-NEXT:    [[TMP422:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV674:%.*]] = sext i8 [[TMP422]] to i32
// SIMD-ONLY0-NEXT:    [[TMP423:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV675:%.*]] = sext i8 [[TMP423]] to i32
// SIMD-ONLY0-NEXT:    [[CMP676:%.*]] = icmp eq i32 [[CONV674]], [[CONV675]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP676]], label [[IF_THEN678:%.*]], label [[IF_ELSE679:%.*]]
// SIMD-ONLY0:       if.then678:
// SIMD-ONLY0-NEXT:    [[TMP424:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP424]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END680:%.*]]
// SIMD-ONLY0:       if.else679:
// SIMD-ONLY0-NEXT:    [[TMP425:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP425]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END680]]
// SIMD-ONLY0:       if.end680:
// SIMD-ONLY0-NEXT:    [[TMP426:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV681:%.*]] = sext i8 [[TMP426]] to i32
// SIMD-ONLY0-NEXT:    [[TMP427:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV682:%.*]] = sext i8 [[TMP427]] to i32
// SIMD-ONLY0-NEXT:    [[CMP683:%.*]] = icmp eq i32 [[CONV681]], [[CONV682]]
// SIMD-ONLY0-NEXT:    [[CONV684:%.*]] = zext i1 [[CMP683]] to i32
// SIMD-ONLY0-NEXT:    [[CONV685:%.*]] = trunc i32 [[CONV684]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV685]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP428:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL686:%.*]] = icmp ne i8 [[TMP428]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL686]], label [[IF_THEN687:%.*]], label [[IF_END688:%.*]]
// SIMD-ONLY0:       if.then687:
// SIMD-ONLY0-NEXT:    [[TMP429:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP429]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END688]]
// SIMD-ONLY0:       if.end688:
// SIMD-ONLY0-NEXT:    [[TMP430:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV689:%.*]] = sext i8 [[TMP430]] to i32
// SIMD-ONLY0-NEXT:    [[TMP431:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV690:%.*]] = sext i8 [[TMP431]] to i32
// SIMD-ONLY0-NEXT:    [[CMP691:%.*]] = icmp eq i32 [[CONV689]], [[CONV690]]
// SIMD-ONLY0-NEXT:    [[CONV692:%.*]] = zext i1 [[CMP691]] to i32
// SIMD-ONLY0-NEXT:    [[CONV693:%.*]] = trunc i32 [[CONV692]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV693]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP432:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL694:%.*]] = icmp ne i8 [[TMP432]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL694]], label [[IF_THEN695:%.*]], label [[IF_END696:%.*]]
// SIMD-ONLY0:       if.then695:
// SIMD-ONLY0-NEXT:    [[TMP433:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP433]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END696]]
// SIMD-ONLY0:       if.end696:
// SIMD-ONLY0-NEXT:    [[TMP434:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV697:%.*]] = sext i8 [[TMP434]] to i32
// SIMD-ONLY0-NEXT:    [[TMP435:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV698:%.*]] = sext i8 [[TMP435]] to i32
// SIMD-ONLY0-NEXT:    [[CMP699:%.*]] = icmp eq i32 [[CONV697]], [[CONV698]]
// SIMD-ONLY0-NEXT:    [[CONV700:%.*]] = zext i1 [[CMP699]] to i32
// SIMD-ONLY0-NEXT:    [[CONV701:%.*]] = trunc i32 [[CONV700]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV701]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP436:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL702:%.*]] = icmp ne i8 [[TMP436]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL702]], label [[IF_THEN703:%.*]], label [[IF_ELSE704:%.*]]
// SIMD-ONLY0:       if.then703:
// SIMD-ONLY0-NEXT:    [[TMP437:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP437]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END705:%.*]]
// SIMD-ONLY0:       if.else704:
// SIMD-ONLY0-NEXT:    [[TMP438:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP438]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END705]]
// SIMD-ONLY0:       if.end705:
// SIMD-ONLY0-NEXT:    [[TMP439:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV706:%.*]] = sext i8 [[TMP439]] to i32
// SIMD-ONLY0-NEXT:    [[TMP440:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV707:%.*]] = sext i8 [[TMP440]] to i32
// SIMD-ONLY0-NEXT:    [[CMP708:%.*]] = icmp eq i32 [[CONV706]], [[CONV707]]
// SIMD-ONLY0-NEXT:    [[CONV709:%.*]] = zext i1 [[CMP708]] to i32
// SIMD-ONLY0-NEXT:    [[CONV710:%.*]] = trunc i32 [[CONV709]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV710]], ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP441:%.*]] = load i8, ptr [[CR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL711:%.*]] = icmp ne i8 [[TMP441]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL711]], label [[IF_THEN712:%.*]], label [[IF_ELSE713:%.*]]
// SIMD-ONLY0:       if.then712:
// SIMD-ONLY0-NEXT:    [[TMP442:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP442]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END714:%.*]]
// SIMD-ONLY0:       if.else713:
// SIMD-ONLY0-NEXT:    [[TMP443:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP443]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END714]]
// SIMD-ONLY0:       if.end714:
// SIMD-ONLY0-NEXT:    [[TMP444:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP444]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP445:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV715:%.*]] = zext i8 [[TMP445]] to i32
// SIMD-ONLY0-NEXT:    [[TMP446:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV716:%.*]] = zext i8 [[TMP446]] to i32
// SIMD-ONLY0-NEXT:    [[CMP717:%.*]] = icmp sgt i32 [[CONV715]], [[CONV716]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP717]], label [[IF_THEN719:%.*]], label [[IF_END720:%.*]]
// SIMD-ONLY0:       if.then719:
// SIMD-ONLY0-NEXT:    [[TMP447:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP447]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END720]]
// SIMD-ONLY0:       if.end720:
// SIMD-ONLY0-NEXT:    [[TMP448:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP448]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP449:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV721:%.*]] = zext i8 [[TMP449]] to i32
// SIMD-ONLY0-NEXT:    [[TMP450:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV722:%.*]] = zext i8 [[TMP450]] to i32
// SIMD-ONLY0-NEXT:    [[CMP723:%.*]] = icmp sgt i32 [[CONV721]], [[CONV722]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP723]], label [[IF_THEN725:%.*]], label [[IF_END726:%.*]]
// SIMD-ONLY0:       if.then725:
// SIMD-ONLY0-NEXT:    [[TMP451:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP451]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END726]]
// SIMD-ONLY0:       if.end726:
// SIMD-ONLY0-NEXT:    [[TMP452:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP452]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP453:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV727:%.*]] = zext i8 [[TMP453]] to i32
// SIMD-ONLY0-NEXT:    [[TMP454:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV728:%.*]] = zext i8 [[TMP454]] to i32
// SIMD-ONLY0-NEXT:    [[CMP729:%.*]] = icmp slt i32 [[CONV727]], [[CONV728]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP729]], label [[IF_THEN731:%.*]], label [[IF_END732:%.*]]
// SIMD-ONLY0:       if.then731:
// SIMD-ONLY0-NEXT:    [[TMP455:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP455]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END732]]
// SIMD-ONLY0:       if.end732:
// SIMD-ONLY0-NEXT:    [[TMP456:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP456]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP457:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV733:%.*]] = zext i8 [[TMP457]] to i32
// SIMD-ONLY0-NEXT:    [[TMP458:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV734:%.*]] = zext i8 [[TMP458]] to i32
// SIMD-ONLY0-NEXT:    [[CMP735:%.*]] = icmp slt i32 [[CONV733]], [[CONV734]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP735]], label [[IF_THEN737:%.*]], label [[IF_END738:%.*]]
// SIMD-ONLY0:       if.then737:
// SIMD-ONLY0-NEXT:    [[TMP459:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP459]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END738]]
// SIMD-ONLY0:       if.end738:
// SIMD-ONLY0-NEXT:    [[TMP460:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP460]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP461:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV739:%.*]] = zext i8 [[TMP461]] to i32
// SIMD-ONLY0-NEXT:    [[TMP462:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV740:%.*]] = zext i8 [[TMP462]] to i32
// SIMD-ONLY0-NEXT:    [[CMP741:%.*]] = icmp eq i32 [[CONV739]], [[CONV740]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP741]], label [[IF_THEN743:%.*]], label [[IF_END744:%.*]]
// SIMD-ONLY0:       if.then743:
// SIMD-ONLY0-NEXT:    [[TMP463:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP463]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END744]]
// SIMD-ONLY0:       if.end744:
// SIMD-ONLY0-NEXT:    [[TMP464:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP464]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP465:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV745:%.*]] = zext i8 [[TMP465]] to i32
// SIMD-ONLY0-NEXT:    [[TMP466:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV746:%.*]] = zext i8 [[TMP466]] to i32
// SIMD-ONLY0-NEXT:    [[CMP747:%.*]] = icmp eq i32 [[CONV745]], [[CONV746]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP747]], label [[IF_THEN749:%.*]], label [[IF_END750:%.*]]
// SIMD-ONLY0:       if.then749:
// SIMD-ONLY0-NEXT:    [[TMP467:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP467]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END750]]
// SIMD-ONLY0:       if.end750:
// SIMD-ONLY0-NEXT:    [[TMP468:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV751:%.*]] = zext i8 [[TMP468]] to i32
// SIMD-ONLY0-NEXT:    [[TMP469:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV752:%.*]] = zext i8 [[TMP469]] to i32
// SIMD-ONLY0-NEXT:    [[CMP753:%.*]] = icmp sgt i32 [[CONV751]], [[CONV752]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP753]], label [[IF_THEN755:%.*]], label [[IF_END756:%.*]]
// SIMD-ONLY0:       if.then755:
// SIMD-ONLY0-NEXT:    [[TMP470:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP470]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END756]]
// SIMD-ONLY0:       if.end756:
// SIMD-ONLY0-NEXT:    [[TMP471:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP471]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP472:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV757:%.*]] = zext i8 [[TMP472]] to i32
// SIMD-ONLY0-NEXT:    [[TMP473:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV758:%.*]] = zext i8 [[TMP473]] to i32
// SIMD-ONLY0-NEXT:    [[CMP759:%.*]] = icmp sgt i32 [[CONV757]], [[CONV758]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP759]], label [[IF_THEN761:%.*]], label [[IF_END762:%.*]]
// SIMD-ONLY0:       if.then761:
// SIMD-ONLY0-NEXT:    [[TMP474:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP474]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END762]]
// SIMD-ONLY0:       if.end762:
// SIMD-ONLY0-NEXT:    [[TMP475:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP475]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP476:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV763:%.*]] = zext i8 [[TMP476]] to i32
// SIMD-ONLY0-NEXT:    [[TMP477:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV764:%.*]] = zext i8 [[TMP477]] to i32
// SIMD-ONLY0-NEXT:    [[CMP765:%.*]] = icmp slt i32 [[CONV763]], [[CONV764]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP765]], label [[IF_THEN767:%.*]], label [[IF_END768:%.*]]
// SIMD-ONLY0:       if.then767:
// SIMD-ONLY0-NEXT:    [[TMP478:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP478]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END768]]
// SIMD-ONLY0:       if.end768:
// SIMD-ONLY0-NEXT:    [[TMP479:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP479]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP480:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV769:%.*]] = zext i8 [[TMP480]] to i32
// SIMD-ONLY0-NEXT:    [[TMP481:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV770:%.*]] = zext i8 [[TMP481]] to i32
// SIMD-ONLY0-NEXT:    [[CMP771:%.*]] = icmp slt i32 [[CONV769]], [[CONV770]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP771]], label [[IF_THEN773:%.*]], label [[IF_END774:%.*]]
// SIMD-ONLY0:       if.then773:
// SIMD-ONLY0-NEXT:    [[TMP482:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP482]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END774]]
// SIMD-ONLY0:       if.end774:
// SIMD-ONLY0-NEXT:    [[TMP483:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP483]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP484:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV775:%.*]] = zext i8 [[TMP484]] to i32
// SIMD-ONLY0-NEXT:    [[TMP485:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV776:%.*]] = zext i8 [[TMP485]] to i32
// SIMD-ONLY0-NEXT:    [[CMP777:%.*]] = icmp eq i32 [[CONV775]], [[CONV776]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP777]], label [[IF_THEN779:%.*]], label [[IF_END780:%.*]]
// SIMD-ONLY0:       if.then779:
// SIMD-ONLY0-NEXT:    [[TMP486:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP486]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END780]]
// SIMD-ONLY0:       if.end780:
// SIMD-ONLY0-NEXT:    [[TMP487:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP487]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP488:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV781:%.*]] = zext i8 [[TMP488]] to i32
// SIMD-ONLY0-NEXT:    [[TMP489:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV782:%.*]] = zext i8 [[TMP489]] to i32
// SIMD-ONLY0-NEXT:    [[CMP783:%.*]] = icmp eq i32 [[CONV781]], [[CONV782]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP783]], label [[IF_THEN785:%.*]], label [[IF_END786:%.*]]
// SIMD-ONLY0:       if.then785:
// SIMD-ONLY0-NEXT:    [[TMP490:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP490]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END786]]
// SIMD-ONLY0:       if.end786:
// SIMD-ONLY0-NEXT:    [[TMP491:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP491]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP492:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV787:%.*]] = zext i8 [[TMP492]] to i32
// SIMD-ONLY0-NEXT:    [[TMP493:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV788:%.*]] = zext i8 [[TMP493]] to i32
// SIMD-ONLY0-NEXT:    [[CMP789:%.*]] = icmp eq i32 [[CONV787]], [[CONV788]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP789]], label [[IF_THEN791:%.*]], label [[IF_ELSE792:%.*]]
// SIMD-ONLY0:       if.then791:
// SIMD-ONLY0-NEXT:    [[TMP494:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP494]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END793:%.*]]
// SIMD-ONLY0:       if.else792:
// SIMD-ONLY0-NEXT:    [[TMP495:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP495]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END793]]
// SIMD-ONLY0:       if.end793:
// SIMD-ONLY0-NEXT:    [[TMP496:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV794:%.*]] = zext i8 [[TMP496]] to i32
// SIMD-ONLY0-NEXT:    [[TMP497:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV795:%.*]] = zext i8 [[TMP497]] to i32
// SIMD-ONLY0-NEXT:    [[CMP796:%.*]] = icmp eq i32 [[CONV794]], [[CONV795]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP796]], label [[IF_THEN798:%.*]], label [[IF_ELSE799:%.*]]
// SIMD-ONLY0:       if.then798:
// SIMD-ONLY0-NEXT:    [[TMP498:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP498]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END800:%.*]]
// SIMD-ONLY0:       if.else799:
// SIMD-ONLY0-NEXT:    [[TMP499:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP499]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END800]]
// SIMD-ONLY0:       if.end800:
// SIMD-ONLY0-NEXT:    [[TMP500:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV801:%.*]] = zext i8 [[TMP500]] to i32
// SIMD-ONLY0-NEXT:    [[TMP501:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV802:%.*]] = zext i8 [[TMP501]] to i32
// SIMD-ONLY0-NEXT:    [[CMP803:%.*]] = icmp eq i32 [[CONV801]], [[CONV802]]
// SIMD-ONLY0-NEXT:    [[CONV804:%.*]] = zext i1 [[CMP803]] to i32
// SIMD-ONLY0-NEXT:    [[CONV805:%.*]] = trunc i32 [[CONV804]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV805]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP502:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL806:%.*]] = icmp ne i8 [[TMP502]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL806]], label [[IF_THEN807:%.*]], label [[IF_END808:%.*]]
// SIMD-ONLY0:       if.then807:
// SIMD-ONLY0-NEXT:    [[TMP503:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP503]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END808]]
// SIMD-ONLY0:       if.end808:
// SIMD-ONLY0-NEXT:    [[TMP504:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV809:%.*]] = zext i8 [[TMP504]] to i32
// SIMD-ONLY0-NEXT:    [[TMP505:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV810:%.*]] = zext i8 [[TMP505]] to i32
// SIMD-ONLY0-NEXT:    [[CMP811:%.*]] = icmp eq i32 [[CONV809]], [[CONV810]]
// SIMD-ONLY0-NEXT:    [[CONV812:%.*]] = zext i1 [[CMP811]] to i32
// SIMD-ONLY0-NEXT:    [[CONV813:%.*]] = trunc i32 [[CONV812]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV813]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP506:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL814:%.*]] = icmp ne i8 [[TMP506]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL814]], label [[IF_THEN815:%.*]], label [[IF_END816:%.*]]
// SIMD-ONLY0:       if.then815:
// SIMD-ONLY0-NEXT:    [[TMP507:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP507]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END816]]
// SIMD-ONLY0:       if.end816:
// SIMD-ONLY0-NEXT:    [[TMP508:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV817:%.*]] = zext i8 [[TMP508]] to i32
// SIMD-ONLY0-NEXT:    [[TMP509:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV818:%.*]] = zext i8 [[TMP509]] to i32
// SIMD-ONLY0-NEXT:    [[CMP819:%.*]] = icmp eq i32 [[CONV817]], [[CONV818]]
// SIMD-ONLY0-NEXT:    [[CONV820:%.*]] = zext i1 [[CMP819]] to i32
// SIMD-ONLY0-NEXT:    [[CONV821:%.*]] = trunc i32 [[CONV820]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV821]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP510:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL822:%.*]] = icmp ne i8 [[TMP510]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL822]], label [[IF_THEN823:%.*]], label [[IF_ELSE824:%.*]]
// SIMD-ONLY0:       if.then823:
// SIMD-ONLY0-NEXT:    [[TMP511:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP511]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END825:%.*]]
// SIMD-ONLY0:       if.else824:
// SIMD-ONLY0-NEXT:    [[TMP512:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP512]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END825]]
// SIMD-ONLY0:       if.end825:
// SIMD-ONLY0-NEXT:    [[TMP513:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV826:%.*]] = zext i8 [[TMP513]] to i32
// SIMD-ONLY0-NEXT:    [[TMP514:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV827:%.*]] = zext i8 [[TMP514]] to i32
// SIMD-ONLY0-NEXT:    [[CMP828:%.*]] = icmp eq i32 [[CONV826]], [[CONV827]]
// SIMD-ONLY0-NEXT:    [[CONV829:%.*]] = zext i1 [[CMP828]] to i32
// SIMD-ONLY0-NEXT:    [[CONV830:%.*]] = trunc i32 [[CONV829]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV830]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP515:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL831:%.*]] = icmp ne i8 [[TMP515]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL831]], label [[IF_THEN832:%.*]], label [[IF_ELSE833:%.*]]
// SIMD-ONLY0:       if.then832:
// SIMD-ONLY0-NEXT:    [[TMP516:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP516]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END834:%.*]]
// SIMD-ONLY0:       if.else833:
// SIMD-ONLY0-NEXT:    [[TMP517:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP517]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END834]]
// SIMD-ONLY0:       if.end834:
// SIMD-ONLY0-NEXT:    [[TMP518:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP518]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP519:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV835:%.*]] = zext i8 [[TMP519]] to i32
// SIMD-ONLY0-NEXT:    [[TMP520:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV836:%.*]] = zext i8 [[TMP520]] to i32
// SIMD-ONLY0-NEXT:    [[CMP837:%.*]] = icmp sgt i32 [[CONV835]], [[CONV836]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP837]], label [[IF_THEN839:%.*]], label [[IF_END840:%.*]]
// SIMD-ONLY0:       if.then839:
// SIMD-ONLY0-NEXT:    [[TMP521:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP521]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END840]]
// SIMD-ONLY0:       if.end840:
// SIMD-ONLY0-NEXT:    [[TMP522:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP522]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP523:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV841:%.*]] = zext i8 [[TMP523]] to i32
// SIMD-ONLY0-NEXT:    [[TMP524:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV842:%.*]] = zext i8 [[TMP524]] to i32
// SIMD-ONLY0-NEXT:    [[CMP843:%.*]] = icmp sgt i32 [[CONV841]], [[CONV842]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP843]], label [[IF_THEN845:%.*]], label [[IF_END846:%.*]]
// SIMD-ONLY0:       if.then845:
// SIMD-ONLY0-NEXT:    [[TMP525:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP525]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END846]]
// SIMD-ONLY0:       if.end846:
// SIMD-ONLY0-NEXT:    [[TMP526:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP526]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP527:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV847:%.*]] = zext i8 [[TMP527]] to i32
// SIMD-ONLY0-NEXT:    [[TMP528:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV848:%.*]] = zext i8 [[TMP528]] to i32
// SIMD-ONLY0-NEXT:    [[CMP849:%.*]] = icmp slt i32 [[CONV847]], [[CONV848]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP849]], label [[IF_THEN851:%.*]], label [[IF_END852:%.*]]
// SIMD-ONLY0:       if.then851:
// SIMD-ONLY0-NEXT:    [[TMP529:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP529]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END852]]
// SIMD-ONLY0:       if.end852:
// SIMD-ONLY0-NEXT:    [[TMP530:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP530]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP531:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV853:%.*]] = zext i8 [[TMP531]] to i32
// SIMD-ONLY0-NEXT:    [[TMP532:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV854:%.*]] = zext i8 [[TMP532]] to i32
// SIMD-ONLY0-NEXT:    [[CMP855:%.*]] = icmp slt i32 [[CONV853]], [[CONV854]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP855]], label [[IF_THEN857:%.*]], label [[IF_END858:%.*]]
// SIMD-ONLY0:       if.then857:
// SIMD-ONLY0-NEXT:    [[TMP533:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP533]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END858]]
// SIMD-ONLY0:       if.end858:
// SIMD-ONLY0-NEXT:    [[TMP534:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP534]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP535:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV859:%.*]] = zext i8 [[TMP535]] to i32
// SIMD-ONLY0-NEXT:    [[TMP536:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV860:%.*]] = zext i8 [[TMP536]] to i32
// SIMD-ONLY0-NEXT:    [[CMP861:%.*]] = icmp eq i32 [[CONV859]], [[CONV860]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP861]], label [[IF_THEN863:%.*]], label [[IF_END864:%.*]]
// SIMD-ONLY0:       if.then863:
// SIMD-ONLY0-NEXT:    [[TMP537:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP537]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END864]]
// SIMD-ONLY0:       if.end864:
// SIMD-ONLY0-NEXT:    [[TMP538:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP538]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP539:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV865:%.*]] = zext i8 [[TMP539]] to i32
// SIMD-ONLY0-NEXT:    [[TMP540:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV866:%.*]] = zext i8 [[TMP540]] to i32
// SIMD-ONLY0-NEXT:    [[CMP867:%.*]] = icmp eq i32 [[CONV865]], [[CONV866]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP867]], label [[IF_THEN869:%.*]], label [[IF_END870:%.*]]
// SIMD-ONLY0:       if.then869:
// SIMD-ONLY0-NEXT:    [[TMP541:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP541]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END870]]
// SIMD-ONLY0:       if.end870:
// SIMD-ONLY0-NEXT:    [[TMP542:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV871:%.*]] = zext i8 [[TMP542]] to i32
// SIMD-ONLY0-NEXT:    [[TMP543:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV872:%.*]] = zext i8 [[TMP543]] to i32
// SIMD-ONLY0-NEXT:    [[CMP873:%.*]] = icmp sgt i32 [[CONV871]], [[CONV872]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP873]], label [[IF_THEN875:%.*]], label [[IF_END876:%.*]]
// SIMD-ONLY0:       if.then875:
// SIMD-ONLY0-NEXT:    [[TMP544:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP544]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END876]]
// SIMD-ONLY0:       if.end876:
// SIMD-ONLY0-NEXT:    [[TMP545:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP545]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP546:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV877:%.*]] = zext i8 [[TMP546]] to i32
// SIMD-ONLY0-NEXT:    [[TMP547:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV878:%.*]] = zext i8 [[TMP547]] to i32
// SIMD-ONLY0-NEXT:    [[CMP879:%.*]] = icmp sgt i32 [[CONV877]], [[CONV878]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP879]], label [[IF_THEN881:%.*]], label [[IF_END882:%.*]]
// SIMD-ONLY0:       if.then881:
// SIMD-ONLY0-NEXT:    [[TMP548:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP548]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END882]]
// SIMD-ONLY0:       if.end882:
// SIMD-ONLY0-NEXT:    [[TMP549:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP549]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP550:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV883:%.*]] = zext i8 [[TMP550]] to i32
// SIMD-ONLY0-NEXT:    [[TMP551:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV884:%.*]] = zext i8 [[TMP551]] to i32
// SIMD-ONLY0-NEXT:    [[CMP885:%.*]] = icmp slt i32 [[CONV883]], [[CONV884]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP885]], label [[IF_THEN887:%.*]], label [[IF_END888:%.*]]
// SIMD-ONLY0:       if.then887:
// SIMD-ONLY0-NEXT:    [[TMP552:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP552]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END888]]
// SIMD-ONLY0:       if.end888:
// SIMD-ONLY0-NEXT:    [[TMP553:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP553]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP554:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV889:%.*]] = zext i8 [[TMP554]] to i32
// SIMD-ONLY0-NEXT:    [[TMP555:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV890:%.*]] = zext i8 [[TMP555]] to i32
// SIMD-ONLY0-NEXT:    [[CMP891:%.*]] = icmp slt i32 [[CONV889]], [[CONV890]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP891]], label [[IF_THEN893:%.*]], label [[IF_END894:%.*]]
// SIMD-ONLY0:       if.then893:
// SIMD-ONLY0-NEXT:    [[TMP556:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP556]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END894]]
// SIMD-ONLY0:       if.end894:
// SIMD-ONLY0-NEXT:    [[TMP557:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP557]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP558:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV895:%.*]] = zext i8 [[TMP558]] to i32
// SIMD-ONLY0-NEXT:    [[TMP559:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV896:%.*]] = zext i8 [[TMP559]] to i32
// SIMD-ONLY0-NEXT:    [[CMP897:%.*]] = icmp eq i32 [[CONV895]], [[CONV896]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP897]], label [[IF_THEN899:%.*]], label [[IF_END900:%.*]]
// SIMD-ONLY0:       if.then899:
// SIMD-ONLY0-NEXT:    [[TMP560:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP560]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END900]]
// SIMD-ONLY0:       if.end900:
// SIMD-ONLY0-NEXT:    [[TMP561:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP561]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP562:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV901:%.*]] = zext i8 [[TMP562]] to i32
// SIMD-ONLY0-NEXT:    [[TMP563:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV902:%.*]] = zext i8 [[TMP563]] to i32
// SIMD-ONLY0-NEXT:    [[CMP903:%.*]] = icmp eq i32 [[CONV901]], [[CONV902]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP903]], label [[IF_THEN905:%.*]], label [[IF_END906:%.*]]
// SIMD-ONLY0:       if.then905:
// SIMD-ONLY0-NEXT:    [[TMP564:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP564]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END906]]
// SIMD-ONLY0:       if.end906:
// SIMD-ONLY0-NEXT:    [[TMP565:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP565]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP566:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV907:%.*]] = zext i8 [[TMP566]] to i32
// SIMD-ONLY0-NEXT:    [[TMP567:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV908:%.*]] = zext i8 [[TMP567]] to i32
// SIMD-ONLY0-NEXT:    [[CMP909:%.*]] = icmp eq i32 [[CONV907]], [[CONV908]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP909]], label [[IF_THEN911:%.*]], label [[IF_ELSE912:%.*]]
// SIMD-ONLY0:       if.then911:
// SIMD-ONLY0-NEXT:    [[TMP568:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP568]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END913:%.*]]
// SIMD-ONLY0:       if.else912:
// SIMD-ONLY0-NEXT:    [[TMP569:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP569]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END913]]
// SIMD-ONLY0:       if.end913:
// SIMD-ONLY0-NEXT:    [[TMP570:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV914:%.*]] = zext i8 [[TMP570]] to i32
// SIMD-ONLY0-NEXT:    [[TMP571:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV915:%.*]] = zext i8 [[TMP571]] to i32
// SIMD-ONLY0-NEXT:    [[CMP916:%.*]] = icmp eq i32 [[CONV914]], [[CONV915]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP916]], label [[IF_THEN918:%.*]], label [[IF_ELSE919:%.*]]
// SIMD-ONLY0:       if.then918:
// SIMD-ONLY0-NEXT:    [[TMP572:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP572]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END920:%.*]]
// SIMD-ONLY0:       if.else919:
// SIMD-ONLY0-NEXT:    [[TMP573:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP573]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END920]]
// SIMD-ONLY0:       if.end920:
// SIMD-ONLY0-NEXT:    [[TMP574:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV921:%.*]] = zext i8 [[TMP574]] to i32
// SIMD-ONLY0-NEXT:    [[TMP575:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV922:%.*]] = zext i8 [[TMP575]] to i32
// SIMD-ONLY0-NEXT:    [[CMP923:%.*]] = icmp eq i32 [[CONV921]], [[CONV922]]
// SIMD-ONLY0-NEXT:    [[CONV924:%.*]] = zext i1 [[CMP923]] to i32
// SIMD-ONLY0-NEXT:    [[CONV925:%.*]] = trunc i32 [[CONV924]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV925]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP576:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL926:%.*]] = icmp ne i8 [[TMP576]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL926]], label [[IF_THEN927:%.*]], label [[IF_END928:%.*]]
// SIMD-ONLY0:       if.then927:
// SIMD-ONLY0-NEXT:    [[TMP577:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP577]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END928]]
// SIMD-ONLY0:       if.end928:
// SIMD-ONLY0-NEXT:    [[TMP578:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV929:%.*]] = zext i8 [[TMP578]] to i32
// SIMD-ONLY0-NEXT:    [[TMP579:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV930:%.*]] = zext i8 [[TMP579]] to i32
// SIMD-ONLY0-NEXT:    [[CMP931:%.*]] = icmp eq i32 [[CONV929]], [[CONV930]]
// SIMD-ONLY0-NEXT:    [[CONV932:%.*]] = zext i1 [[CMP931]] to i32
// SIMD-ONLY0-NEXT:    [[CONV933:%.*]] = trunc i32 [[CONV932]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV933]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP580:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL934:%.*]] = icmp ne i8 [[TMP580]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL934]], label [[IF_THEN935:%.*]], label [[IF_END936:%.*]]
// SIMD-ONLY0:       if.then935:
// SIMD-ONLY0-NEXT:    [[TMP581:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP581]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END936]]
// SIMD-ONLY0:       if.end936:
// SIMD-ONLY0-NEXT:    [[TMP582:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV937:%.*]] = zext i8 [[TMP582]] to i32
// SIMD-ONLY0-NEXT:    [[TMP583:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV938:%.*]] = zext i8 [[TMP583]] to i32
// SIMD-ONLY0-NEXT:    [[CMP939:%.*]] = icmp eq i32 [[CONV937]], [[CONV938]]
// SIMD-ONLY0-NEXT:    [[CONV940:%.*]] = zext i1 [[CMP939]] to i32
// SIMD-ONLY0-NEXT:    [[CONV941:%.*]] = trunc i32 [[CONV940]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV941]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP584:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL942:%.*]] = icmp ne i8 [[TMP584]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL942]], label [[IF_THEN943:%.*]], label [[IF_ELSE944:%.*]]
// SIMD-ONLY0:       if.then943:
// SIMD-ONLY0-NEXT:    [[TMP585:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP585]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END945:%.*]]
// SIMD-ONLY0:       if.else944:
// SIMD-ONLY0-NEXT:    [[TMP586:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP586]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END945]]
// SIMD-ONLY0:       if.end945:
// SIMD-ONLY0-NEXT:    [[TMP587:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV946:%.*]] = zext i8 [[TMP587]] to i32
// SIMD-ONLY0-NEXT:    [[TMP588:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV947:%.*]] = zext i8 [[TMP588]] to i32
// SIMD-ONLY0-NEXT:    [[CMP948:%.*]] = icmp eq i32 [[CONV946]], [[CONV947]]
// SIMD-ONLY0-NEXT:    [[CONV949:%.*]] = zext i1 [[CMP948]] to i32
// SIMD-ONLY0-NEXT:    [[CONV950:%.*]] = trunc i32 [[CONV949]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV950]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP589:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL951:%.*]] = icmp ne i8 [[TMP589]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL951]], label [[IF_THEN952:%.*]], label [[IF_ELSE953:%.*]]
// SIMD-ONLY0:       if.then952:
// SIMD-ONLY0-NEXT:    [[TMP590:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP590]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END954:%.*]]
// SIMD-ONLY0:       if.else953:
// SIMD-ONLY0-NEXT:    [[TMP591:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP591]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END954]]
// SIMD-ONLY0:       if.end954:
// SIMD-ONLY0-NEXT:    [[TMP592:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP592]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP593:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV955:%.*]] = zext i8 [[TMP593]] to i32
// SIMD-ONLY0-NEXT:    [[TMP594:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV956:%.*]] = zext i8 [[TMP594]] to i32
// SIMD-ONLY0-NEXT:    [[CMP957:%.*]] = icmp sgt i32 [[CONV955]], [[CONV956]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP957]], label [[IF_THEN959:%.*]], label [[IF_END960:%.*]]
// SIMD-ONLY0:       if.then959:
// SIMD-ONLY0-NEXT:    [[TMP595:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP595]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END960]]
// SIMD-ONLY0:       if.end960:
// SIMD-ONLY0-NEXT:    [[TMP596:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP596]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP597:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV961:%.*]] = zext i8 [[TMP597]] to i32
// SIMD-ONLY0-NEXT:    [[TMP598:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV962:%.*]] = zext i8 [[TMP598]] to i32
// SIMD-ONLY0-NEXT:    [[CMP963:%.*]] = icmp sgt i32 [[CONV961]], [[CONV962]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP963]], label [[IF_THEN965:%.*]], label [[IF_END966:%.*]]
// SIMD-ONLY0:       if.then965:
// SIMD-ONLY0-NEXT:    [[TMP599:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP599]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END966]]
// SIMD-ONLY0:       if.end966:
// SIMD-ONLY0-NEXT:    [[TMP600:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP600]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP601:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV967:%.*]] = zext i8 [[TMP601]] to i32
// SIMD-ONLY0-NEXT:    [[TMP602:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV968:%.*]] = zext i8 [[TMP602]] to i32
// SIMD-ONLY0-NEXT:    [[CMP969:%.*]] = icmp slt i32 [[CONV967]], [[CONV968]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP969]], label [[IF_THEN971:%.*]], label [[IF_END972:%.*]]
// SIMD-ONLY0:       if.then971:
// SIMD-ONLY0-NEXT:    [[TMP603:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP603]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END972]]
// SIMD-ONLY0:       if.end972:
// SIMD-ONLY0-NEXT:    [[TMP604:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP604]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP605:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV973:%.*]] = zext i8 [[TMP605]] to i32
// SIMD-ONLY0-NEXT:    [[TMP606:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV974:%.*]] = zext i8 [[TMP606]] to i32
// SIMD-ONLY0-NEXT:    [[CMP975:%.*]] = icmp slt i32 [[CONV973]], [[CONV974]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP975]], label [[IF_THEN977:%.*]], label [[IF_END978:%.*]]
// SIMD-ONLY0:       if.then977:
// SIMD-ONLY0-NEXT:    [[TMP607:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP607]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END978]]
// SIMD-ONLY0:       if.end978:
// SIMD-ONLY0-NEXT:    [[TMP608:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP608]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP609:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV979:%.*]] = zext i8 [[TMP609]] to i32
// SIMD-ONLY0-NEXT:    [[TMP610:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV980:%.*]] = zext i8 [[TMP610]] to i32
// SIMD-ONLY0-NEXT:    [[CMP981:%.*]] = icmp eq i32 [[CONV979]], [[CONV980]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP981]], label [[IF_THEN983:%.*]], label [[IF_END984:%.*]]
// SIMD-ONLY0:       if.then983:
// SIMD-ONLY0-NEXT:    [[TMP611:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP611]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END984]]
// SIMD-ONLY0:       if.end984:
// SIMD-ONLY0-NEXT:    [[TMP612:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP612]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP613:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV985:%.*]] = zext i8 [[TMP613]] to i32
// SIMD-ONLY0-NEXT:    [[TMP614:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV986:%.*]] = zext i8 [[TMP614]] to i32
// SIMD-ONLY0-NEXT:    [[CMP987:%.*]] = icmp eq i32 [[CONV985]], [[CONV986]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP987]], label [[IF_THEN989:%.*]], label [[IF_END990:%.*]]
// SIMD-ONLY0:       if.then989:
// SIMD-ONLY0-NEXT:    [[TMP615:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP615]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END990]]
// SIMD-ONLY0:       if.end990:
// SIMD-ONLY0-NEXT:    [[TMP616:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV991:%.*]] = zext i8 [[TMP616]] to i32
// SIMD-ONLY0-NEXT:    [[TMP617:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV992:%.*]] = zext i8 [[TMP617]] to i32
// SIMD-ONLY0-NEXT:    [[CMP993:%.*]] = icmp sgt i32 [[CONV991]], [[CONV992]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP993]], label [[IF_THEN995:%.*]], label [[IF_END996:%.*]]
// SIMD-ONLY0:       if.then995:
// SIMD-ONLY0-NEXT:    [[TMP618:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP618]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END996]]
// SIMD-ONLY0:       if.end996:
// SIMD-ONLY0-NEXT:    [[TMP619:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP619]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP620:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV997:%.*]] = zext i8 [[TMP620]] to i32
// SIMD-ONLY0-NEXT:    [[TMP621:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV998:%.*]] = zext i8 [[TMP621]] to i32
// SIMD-ONLY0-NEXT:    [[CMP999:%.*]] = icmp sgt i32 [[CONV997]], [[CONV998]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP999]], label [[IF_THEN1001:%.*]], label [[IF_END1002:%.*]]
// SIMD-ONLY0:       if.then1001:
// SIMD-ONLY0-NEXT:    [[TMP622:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP622]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1002]]
// SIMD-ONLY0:       if.end1002:
// SIMD-ONLY0-NEXT:    [[TMP623:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP623]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP624:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1003:%.*]] = zext i8 [[TMP624]] to i32
// SIMD-ONLY0-NEXT:    [[TMP625:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1004:%.*]] = zext i8 [[TMP625]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1005:%.*]] = icmp slt i32 [[CONV1003]], [[CONV1004]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1005]], label [[IF_THEN1007:%.*]], label [[IF_END1008:%.*]]
// SIMD-ONLY0:       if.then1007:
// SIMD-ONLY0-NEXT:    [[TMP626:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP626]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1008]]
// SIMD-ONLY0:       if.end1008:
// SIMD-ONLY0-NEXT:    [[TMP627:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP627]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP628:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1009:%.*]] = zext i8 [[TMP628]] to i32
// SIMD-ONLY0-NEXT:    [[TMP629:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1010:%.*]] = zext i8 [[TMP629]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1011:%.*]] = icmp slt i32 [[CONV1009]], [[CONV1010]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1011]], label [[IF_THEN1013:%.*]], label [[IF_END1014:%.*]]
// SIMD-ONLY0:       if.then1013:
// SIMD-ONLY0-NEXT:    [[TMP630:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP630]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1014]]
// SIMD-ONLY0:       if.end1014:
// SIMD-ONLY0-NEXT:    [[TMP631:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP631]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP632:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1015:%.*]] = zext i8 [[TMP632]] to i32
// SIMD-ONLY0-NEXT:    [[TMP633:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1016:%.*]] = zext i8 [[TMP633]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1017:%.*]] = icmp eq i32 [[CONV1015]], [[CONV1016]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1017]], label [[IF_THEN1019:%.*]], label [[IF_END1020:%.*]]
// SIMD-ONLY0:       if.then1019:
// SIMD-ONLY0-NEXT:    [[TMP634:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP634]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1020]]
// SIMD-ONLY0:       if.end1020:
// SIMD-ONLY0-NEXT:    [[TMP635:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP635]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP636:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1021:%.*]] = zext i8 [[TMP636]] to i32
// SIMD-ONLY0-NEXT:    [[TMP637:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1022:%.*]] = zext i8 [[TMP637]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1023:%.*]] = icmp eq i32 [[CONV1021]], [[CONV1022]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1023]], label [[IF_THEN1025:%.*]], label [[IF_END1026:%.*]]
// SIMD-ONLY0:       if.then1025:
// SIMD-ONLY0-NEXT:    [[TMP638:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP638]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1026]]
// SIMD-ONLY0:       if.end1026:
// SIMD-ONLY0-NEXT:    [[TMP639:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP639]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP640:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1027:%.*]] = zext i8 [[TMP640]] to i32
// SIMD-ONLY0-NEXT:    [[TMP641:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1028:%.*]] = zext i8 [[TMP641]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1029:%.*]] = icmp eq i32 [[CONV1027]], [[CONV1028]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1029]], label [[IF_THEN1031:%.*]], label [[IF_ELSE1032:%.*]]
// SIMD-ONLY0:       if.then1031:
// SIMD-ONLY0-NEXT:    [[TMP642:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP642]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1033:%.*]]
// SIMD-ONLY0:       if.else1032:
// SIMD-ONLY0-NEXT:    [[TMP643:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP643]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1033]]
// SIMD-ONLY0:       if.end1033:
// SIMD-ONLY0-NEXT:    [[TMP644:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1034:%.*]] = zext i8 [[TMP644]] to i32
// SIMD-ONLY0-NEXT:    [[TMP645:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1035:%.*]] = zext i8 [[TMP645]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1036:%.*]] = icmp eq i32 [[CONV1034]], [[CONV1035]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1036]], label [[IF_THEN1038:%.*]], label [[IF_ELSE1039:%.*]]
// SIMD-ONLY0:       if.then1038:
// SIMD-ONLY0-NEXT:    [[TMP646:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP646]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1040:%.*]]
// SIMD-ONLY0:       if.else1039:
// SIMD-ONLY0-NEXT:    [[TMP647:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP647]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1040]]
// SIMD-ONLY0:       if.end1040:
// SIMD-ONLY0-NEXT:    [[TMP648:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1041:%.*]] = zext i8 [[TMP648]] to i32
// SIMD-ONLY0-NEXT:    [[TMP649:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1042:%.*]] = zext i8 [[TMP649]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1043:%.*]] = icmp eq i32 [[CONV1041]], [[CONV1042]]
// SIMD-ONLY0-NEXT:    [[CONV1044:%.*]] = zext i1 [[CMP1043]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1045:%.*]] = trunc i32 [[CONV1044]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1045]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP650:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1046:%.*]] = icmp ne i8 [[TMP650]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1046]], label [[IF_THEN1047:%.*]], label [[IF_END1048:%.*]]
// SIMD-ONLY0:       if.then1047:
// SIMD-ONLY0-NEXT:    [[TMP651:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP651]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1048]]
// SIMD-ONLY0:       if.end1048:
// SIMD-ONLY0-NEXT:    [[TMP652:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1049:%.*]] = zext i8 [[TMP652]] to i32
// SIMD-ONLY0-NEXT:    [[TMP653:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1050:%.*]] = zext i8 [[TMP653]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1051:%.*]] = icmp eq i32 [[CONV1049]], [[CONV1050]]
// SIMD-ONLY0-NEXT:    [[CONV1052:%.*]] = zext i1 [[CMP1051]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1053:%.*]] = trunc i32 [[CONV1052]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1053]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP654:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1054:%.*]] = icmp ne i8 [[TMP654]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1054]], label [[IF_THEN1055:%.*]], label [[IF_END1056:%.*]]
// SIMD-ONLY0:       if.then1055:
// SIMD-ONLY0-NEXT:    [[TMP655:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP655]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1056]]
// SIMD-ONLY0:       if.end1056:
// SIMD-ONLY0-NEXT:    [[TMP656:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1057:%.*]] = zext i8 [[TMP656]] to i32
// SIMD-ONLY0-NEXT:    [[TMP657:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1058:%.*]] = zext i8 [[TMP657]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1059:%.*]] = icmp eq i32 [[CONV1057]], [[CONV1058]]
// SIMD-ONLY0-NEXT:    [[CONV1060:%.*]] = zext i1 [[CMP1059]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1061:%.*]] = trunc i32 [[CONV1060]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1061]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP658:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1062:%.*]] = icmp ne i8 [[TMP658]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1062]], label [[IF_THEN1063:%.*]], label [[IF_ELSE1064:%.*]]
// SIMD-ONLY0:       if.then1063:
// SIMD-ONLY0-NEXT:    [[TMP659:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP659]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1065:%.*]]
// SIMD-ONLY0:       if.else1064:
// SIMD-ONLY0-NEXT:    [[TMP660:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP660]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1065]]
// SIMD-ONLY0:       if.end1065:
// SIMD-ONLY0-NEXT:    [[TMP661:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1066:%.*]] = zext i8 [[TMP661]] to i32
// SIMD-ONLY0-NEXT:    [[TMP662:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1067:%.*]] = zext i8 [[TMP662]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1068:%.*]] = icmp eq i32 [[CONV1066]], [[CONV1067]]
// SIMD-ONLY0-NEXT:    [[CONV1069:%.*]] = zext i1 [[CMP1068]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1070:%.*]] = trunc i32 [[CONV1069]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1070]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP663:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1071:%.*]] = icmp ne i8 [[TMP663]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1071]], label [[IF_THEN1072:%.*]], label [[IF_ELSE1073:%.*]]
// SIMD-ONLY0:       if.then1072:
// SIMD-ONLY0-NEXT:    [[TMP664:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP664]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1074:%.*]]
// SIMD-ONLY0:       if.else1073:
// SIMD-ONLY0-NEXT:    [[TMP665:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP665]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1074]]
// SIMD-ONLY0:       if.end1074:
// SIMD-ONLY0-NEXT:    [[TMP666:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP666]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP667:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1075:%.*]] = zext i8 [[TMP667]] to i32
// SIMD-ONLY0-NEXT:    [[TMP668:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1076:%.*]] = zext i8 [[TMP668]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1077:%.*]] = icmp sgt i32 [[CONV1075]], [[CONV1076]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1077]], label [[IF_THEN1079:%.*]], label [[IF_END1080:%.*]]
// SIMD-ONLY0:       if.then1079:
// SIMD-ONLY0-NEXT:    [[TMP669:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP669]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1080]]
// SIMD-ONLY0:       if.end1080:
// SIMD-ONLY0-NEXT:    [[TMP670:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP670]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP671:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1081:%.*]] = zext i8 [[TMP671]] to i32
// SIMD-ONLY0-NEXT:    [[TMP672:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1082:%.*]] = zext i8 [[TMP672]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1083:%.*]] = icmp sgt i32 [[CONV1081]], [[CONV1082]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1083]], label [[IF_THEN1085:%.*]], label [[IF_END1086:%.*]]
// SIMD-ONLY0:       if.then1085:
// SIMD-ONLY0-NEXT:    [[TMP673:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP673]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1086]]
// SIMD-ONLY0:       if.end1086:
// SIMD-ONLY0-NEXT:    [[TMP674:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP674]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP675:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1087:%.*]] = zext i8 [[TMP675]] to i32
// SIMD-ONLY0-NEXT:    [[TMP676:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1088:%.*]] = zext i8 [[TMP676]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1089:%.*]] = icmp slt i32 [[CONV1087]], [[CONV1088]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1089]], label [[IF_THEN1091:%.*]], label [[IF_END1092:%.*]]
// SIMD-ONLY0:       if.then1091:
// SIMD-ONLY0-NEXT:    [[TMP677:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP677]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1092]]
// SIMD-ONLY0:       if.end1092:
// SIMD-ONLY0-NEXT:    [[TMP678:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP678]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP679:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1093:%.*]] = zext i8 [[TMP679]] to i32
// SIMD-ONLY0-NEXT:    [[TMP680:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1094:%.*]] = zext i8 [[TMP680]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1095:%.*]] = icmp slt i32 [[CONV1093]], [[CONV1094]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1095]], label [[IF_THEN1097:%.*]], label [[IF_END1098:%.*]]
// SIMD-ONLY0:       if.then1097:
// SIMD-ONLY0-NEXT:    [[TMP681:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP681]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1098]]
// SIMD-ONLY0:       if.end1098:
// SIMD-ONLY0-NEXT:    [[TMP682:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP682]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP683:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1099:%.*]] = zext i8 [[TMP683]] to i32
// SIMD-ONLY0-NEXT:    [[TMP684:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1100:%.*]] = zext i8 [[TMP684]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1101:%.*]] = icmp eq i32 [[CONV1099]], [[CONV1100]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1101]], label [[IF_THEN1103:%.*]], label [[IF_END1104:%.*]]
// SIMD-ONLY0:       if.then1103:
// SIMD-ONLY0-NEXT:    [[TMP685:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP685]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1104]]
// SIMD-ONLY0:       if.end1104:
// SIMD-ONLY0-NEXT:    [[TMP686:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP686]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP687:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1105:%.*]] = zext i8 [[TMP687]] to i32
// SIMD-ONLY0-NEXT:    [[TMP688:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1106:%.*]] = zext i8 [[TMP688]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1107:%.*]] = icmp eq i32 [[CONV1105]], [[CONV1106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1107]], label [[IF_THEN1109:%.*]], label [[IF_END1110:%.*]]
// SIMD-ONLY0:       if.then1109:
// SIMD-ONLY0-NEXT:    [[TMP689:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP689]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1110]]
// SIMD-ONLY0:       if.end1110:
// SIMD-ONLY0-NEXT:    [[TMP690:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1111:%.*]] = zext i8 [[TMP690]] to i32
// SIMD-ONLY0-NEXT:    [[TMP691:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1112:%.*]] = zext i8 [[TMP691]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1113:%.*]] = icmp sgt i32 [[CONV1111]], [[CONV1112]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1113]], label [[IF_THEN1115:%.*]], label [[IF_END1116:%.*]]
// SIMD-ONLY0:       if.then1115:
// SIMD-ONLY0-NEXT:    [[TMP692:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP692]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1116]]
// SIMD-ONLY0:       if.end1116:
// SIMD-ONLY0-NEXT:    [[TMP693:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP693]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP694:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1117:%.*]] = zext i8 [[TMP694]] to i32
// SIMD-ONLY0-NEXT:    [[TMP695:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1118:%.*]] = zext i8 [[TMP695]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1119:%.*]] = icmp sgt i32 [[CONV1117]], [[CONV1118]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1119]], label [[IF_THEN1121:%.*]], label [[IF_END1122:%.*]]
// SIMD-ONLY0:       if.then1121:
// SIMD-ONLY0-NEXT:    [[TMP696:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP696]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1122]]
// SIMD-ONLY0:       if.end1122:
// SIMD-ONLY0-NEXT:    [[TMP697:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP697]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP698:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1123:%.*]] = zext i8 [[TMP698]] to i32
// SIMD-ONLY0-NEXT:    [[TMP699:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1124:%.*]] = zext i8 [[TMP699]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1125:%.*]] = icmp slt i32 [[CONV1123]], [[CONV1124]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1125]], label [[IF_THEN1127:%.*]], label [[IF_END1128:%.*]]
// SIMD-ONLY0:       if.then1127:
// SIMD-ONLY0-NEXT:    [[TMP700:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP700]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1128]]
// SIMD-ONLY0:       if.end1128:
// SIMD-ONLY0-NEXT:    [[TMP701:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP701]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP702:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1129:%.*]] = zext i8 [[TMP702]] to i32
// SIMD-ONLY0-NEXT:    [[TMP703:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1130:%.*]] = zext i8 [[TMP703]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1131:%.*]] = icmp slt i32 [[CONV1129]], [[CONV1130]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1131]], label [[IF_THEN1133:%.*]], label [[IF_END1134:%.*]]
// SIMD-ONLY0:       if.then1133:
// SIMD-ONLY0-NEXT:    [[TMP704:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP704]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1134]]
// SIMD-ONLY0:       if.end1134:
// SIMD-ONLY0-NEXT:    [[TMP705:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP705]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP706:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1135:%.*]] = zext i8 [[TMP706]] to i32
// SIMD-ONLY0-NEXT:    [[TMP707:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1136:%.*]] = zext i8 [[TMP707]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1137:%.*]] = icmp eq i32 [[CONV1135]], [[CONV1136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1137]], label [[IF_THEN1139:%.*]], label [[IF_END1140:%.*]]
// SIMD-ONLY0:       if.then1139:
// SIMD-ONLY0-NEXT:    [[TMP708:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP708]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1140]]
// SIMD-ONLY0:       if.end1140:
// SIMD-ONLY0-NEXT:    [[TMP709:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP709]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP710:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1141:%.*]] = zext i8 [[TMP710]] to i32
// SIMD-ONLY0-NEXT:    [[TMP711:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1142:%.*]] = zext i8 [[TMP711]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1143:%.*]] = icmp eq i32 [[CONV1141]], [[CONV1142]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1143]], label [[IF_THEN1145:%.*]], label [[IF_END1146:%.*]]
// SIMD-ONLY0:       if.then1145:
// SIMD-ONLY0-NEXT:    [[TMP712:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP712]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1146]]
// SIMD-ONLY0:       if.end1146:
// SIMD-ONLY0-NEXT:    [[TMP713:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP713]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP714:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1147:%.*]] = zext i8 [[TMP714]] to i32
// SIMD-ONLY0-NEXT:    [[TMP715:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1148:%.*]] = zext i8 [[TMP715]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1149:%.*]] = icmp eq i32 [[CONV1147]], [[CONV1148]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1149]], label [[IF_THEN1151:%.*]], label [[IF_ELSE1152:%.*]]
// SIMD-ONLY0:       if.then1151:
// SIMD-ONLY0-NEXT:    [[TMP716:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP716]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1153:%.*]]
// SIMD-ONLY0:       if.else1152:
// SIMD-ONLY0-NEXT:    [[TMP717:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP717]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1153]]
// SIMD-ONLY0:       if.end1153:
// SIMD-ONLY0-NEXT:    [[TMP718:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1154:%.*]] = zext i8 [[TMP718]] to i32
// SIMD-ONLY0-NEXT:    [[TMP719:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1155:%.*]] = zext i8 [[TMP719]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1156:%.*]] = icmp eq i32 [[CONV1154]], [[CONV1155]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1156]], label [[IF_THEN1158:%.*]], label [[IF_ELSE1159:%.*]]
// SIMD-ONLY0:       if.then1158:
// SIMD-ONLY0-NEXT:    [[TMP720:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP720]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1160:%.*]]
// SIMD-ONLY0:       if.else1159:
// SIMD-ONLY0-NEXT:    [[TMP721:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP721]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1160]]
// SIMD-ONLY0:       if.end1160:
// SIMD-ONLY0-NEXT:    [[TMP722:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1161:%.*]] = zext i8 [[TMP722]] to i32
// SIMD-ONLY0-NEXT:    [[TMP723:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1162:%.*]] = zext i8 [[TMP723]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1163:%.*]] = icmp eq i32 [[CONV1161]], [[CONV1162]]
// SIMD-ONLY0-NEXT:    [[CONV1164:%.*]] = zext i1 [[CMP1163]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1165:%.*]] = trunc i32 [[CONV1164]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1165]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP724:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1166:%.*]] = icmp ne i8 [[TMP724]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1166]], label [[IF_THEN1167:%.*]], label [[IF_END1168:%.*]]
// SIMD-ONLY0:       if.then1167:
// SIMD-ONLY0-NEXT:    [[TMP725:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP725]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1168]]
// SIMD-ONLY0:       if.end1168:
// SIMD-ONLY0-NEXT:    [[TMP726:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1169:%.*]] = zext i8 [[TMP726]] to i32
// SIMD-ONLY0-NEXT:    [[TMP727:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1170:%.*]] = zext i8 [[TMP727]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1171:%.*]] = icmp eq i32 [[CONV1169]], [[CONV1170]]
// SIMD-ONLY0-NEXT:    [[CONV1172:%.*]] = zext i1 [[CMP1171]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1173:%.*]] = trunc i32 [[CONV1172]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1173]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP728:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1174:%.*]] = icmp ne i8 [[TMP728]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1174]], label [[IF_THEN1175:%.*]], label [[IF_END1176:%.*]]
// SIMD-ONLY0:       if.then1175:
// SIMD-ONLY0-NEXT:    [[TMP729:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP729]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1176]]
// SIMD-ONLY0:       if.end1176:
// SIMD-ONLY0-NEXT:    [[TMP730:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1177:%.*]] = zext i8 [[TMP730]] to i32
// SIMD-ONLY0-NEXT:    [[TMP731:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1178:%.*]] = zext i8 [[TMP731]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1179:%.*]] = icmp eq i32 [[CONV1177]], [[CONV1178]]
// SIMD-ONLY0-NEXT:    [[CONV1180:%.*]] = zext i1 [[CMP1179]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1181:%.*]] = trunc i32 [[CONV1180]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1181]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP732:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1182:%.*]] = icmp ne i8 [[TMP732]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1182]], label [[IF_THEN1183:%.*]], label [[IF_ELSE1184:%.*]]
// SIMD-ONLY0:       if.then1183:
// SIMD-ONLY0-NEXT:    [[TMP733:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP733]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1185:%.*]]
// SIMD-ONLY0:       if.else1184:
// SIMD-ONLY0-NEXT:    [[TMP734:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP734]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1185]]
// SIMD-ONLY0:       if.end1185:
// SIMD-ONLY0-NEXT:    [[TMP735:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1186:%.*]] = zext i8 [[TMP735]] to i32
// SIMD-ONLY0-NEXT:    [[TMP736:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1187:%.*]] = zext i8 [[TMP736]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1188:%.*]] = icmp eq i32 [[CONV1186]], [[CONV1187]]
// SIMD-ONLY0-NEXT:    [[CONV1189:%.*]] = zext i1 [[CMP1188]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1190:%.*]] = trunc i32 [[CONV1189]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1190]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP737:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1191:%.*]] = icmp ne i8 [[TMP737]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1191]], label [[IF_THEN1192:%.*]], label [[IF_ELSE1193:%.*]]
// SIMD-ONLY0:       if.then1192:
// SIMD-ONLY0-NEXT:    [[TMP738:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP738]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1194:%.*]]
// SIMD-ONLY0:       if.else1193:
// SIMD-ONLY0-NEXT:    [[TMP739:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP739]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1194]]
// SIMD-ONLY0:       if.end1194:
// SIMD-ONLY0-NEXT:    [[TMP740:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP740]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP741:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1195:%.*]] = zext i8 [[TMP741]] to i32
// SIMD-ONLY0-NEXT:    [[TMP742:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1196:%.*]] = zext i8 [[TMP742]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1197:%.*]] = icmp sgt i32 [[CONV1195]], [[CONV1196]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1197]], label [[IF_THEN1199:%.*]], label [[IF_END1200:%.*]]
// SIMD-ONLY0:       if.then1199:
// SIMD-ONLY0-NEXT:    [[TMP743:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP743]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1200]]
// SIMD-ONLY0:       if.end1200:
// SIMD-ONLY0-NEXT:    [[TMP744:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP744]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP745:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1201:%.*]] = zext i8 [[TMP745]] to i32
// SIMD-ONLY0-NEXT:    [[TMP746:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1202:%.*]] = zext i8 [[TMP746]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1203:%.*]] = icmp sgt i32 [[CONV1201]], [[CONV1202]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1203]], label [[IF_THEN1205:%.*]], label [[IF_END1206:%.*]]
// SIMD-ONLY0:       if.then1205:
// SIMD-ONLY0-NEXT:    [[TMP747:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP747]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1206]]
// SIMD-ONLY0:       if.end1206:
// SIMD-ONLY0-NEXT:    [[TMP748:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP748]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP749:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1207:%.*]] = zext i8 [[TMP749]] to i32
// SIMD-ONLY0-NEXT:    [[TMP750:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1208:%.*]] = zext i8 [[TMP750]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1209:%.*]] = icmp slt i32 [[CONV1207]], [[CONV1208]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1209]], label [[IF_THEN1211:%.*]], label [[IF_END1212:%.*]]
// SIMD-ONLY0:       if.then1211:
// SIMD-ONLY0-NEXT:    [[TMP751:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP751]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1212]]
// SIMD-ONLY0:       if.end1212:
// SIMD-ONLY0-NEXT:    [[TMP752:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP752]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP753:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1213:%.*]] = zext i8 [[TMP753]] to i32
// SIMD-ONLY0-NEXT:    [[TMP754:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1214:%.*]] = zext i8 [[TMP754]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1215:%.*]] = icmp slt i32 [[CONV1213]], [[CONV1214]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1215]], label [[IF_THEN1217:%.*]], label [[IF_END1218:%.*]]
// SIMD-ONLY0:       if.then1217:
// SIMD-ONLY0-NEXT:    [[TMP755:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP755]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1218]]
// SIMD-ONLY0:       if.end1218:
// SIMD-ONLY0-NEXT:    [[TMP756:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP756]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP757:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1219:%.*]] = zext i8 [[TMP757]] to i32
// SIMD-ONLY0-NEXT:    [[TMP758:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1220:%.*]] = zext i8 [[TMP758]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1221:%.*]] = icmp eq i32 [[CONV1219]], [[CONV1220]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1221]], label [[IF_THEN1223:%.*]], label [[IF_END1224:%.*]]
// SIMD-ONLY0:       if.then1223:
// SIMD-ONLY0-NEXT:    [[TMP759:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP759]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1224]]
// SIMD-ONLY0:       if.end1224:
// SIMD-ONLY0-NEXT:    [[TMP760:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP760]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP761:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1225:%.*]] = zext i8 [[TMP761]] to i32
// SIMD-ONLY0-NEXT:    [[TMP762:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1226:%.*]] = zext i8 [[TMP762]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1227:%.*]] = icmp eq i32 [[CONV1225]], [[CONV1226]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1227]], label [[IF_THEN1229:%.*]], label [[IF_END1230:%.*]]
// SIMD-ONLY0:       if.then1229:
// SIMD-ONLY0-NEXT:    [[TMP763:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP763]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1230]]
// SIMD-ONLY0:       if.end1230:
// SIMD-ONLY0-NEXT:    [[TMP764:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1231:%.*]] = zext i8 [[TMP764]] to i32
// SIMD-ONLY0-NEXT:    [[TMP765:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1232:%.*]] = zext i8 [[TMP765]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1233:%.*]] = icmp sgt i32 [[CONV1231]], [[CONV1232]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1233]], label [[IF_THEN1235:%.*]], label [[IF_END1236:%.*]]
// SIMD-ONLY0:       if.then1235:
// SIMD-ONLY0-NEXT:    [[TMP766:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP766]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1236]]
// SIMD-ONLY0:       if.end1236:
// SIMD-ONLY0-NEXT:    [[TMP767:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP767]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP768:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1237:%.*]] = zext i8 [[TMP768]] to i32
// SIMD-ONLY0-NEXT:    [[TMP769:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1238:%.*]] = zext i8 [[TMP769]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1239:%.*]] = icmp sgt i32 [[CONV1237]], [[CONV1238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1239]], label [[IF_THEN1241:%.*]], label [[IF_END1242:%.*]]
// SIMD-ONLY0:       if.then1241:
// SIMD-ONLY0-NEXT:    [[TMP770:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP770]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1242]]
// SIMD-ONLY0:       if.end1242:
// SIMD-ONLY0-NEXT:    [[TMP771:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP771]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP772:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1243:%.*]] = zext i8 [[TMP772]] to i32
// SIMD-ONLY0-NEXT:    [[TMP773:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1244:%.*]] = zext i8 [[TMP773]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1245:%.*]] = icmp slt i32 [[CONV1243]], [[CONV1244]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1245]], label [[IF_THEN1247:%.*]], label [[IF_END1248:%.*]]
// SIMD-ONLY0:       if.then1247:
// SIMD-ONLY0-NEXT:    [[TMP774:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP774]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1248]]
// SIMD-ONLY0:       if.end1248:
// SIMD-ONLY0-NEXT:    [[TMP775:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP775]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP776:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1249:%.*]] = zext i8 [[TMP776]] to i32
// SIMD-ONLY0-NEXT:    [[TMP777:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1250:%.*]] = zext i8 [[TMP777]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1251:%.*]] = icmp slt i32 [[CONV1249]], [[CONV1250]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1251]], label [[IF_THEN1253:%.*]], label [[IF_END1254:%.*]]
// SIMD-ONLY0:       if.then1253:
// SIMD-ONLY0-NEXT:    [[TMP778:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP778]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1254]]
// SIMD-ONLY0:       if.end1254:
// SIMD-ONLY0-NEXT:    [[TMP779:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP779]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP780:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1255:%.*]] = zext i8 [[TMP780]] to i32
// SIMD-ONLY0-NEXT:    [[TMP781:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1256:%.*]] = zext i8 [[TMP781]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1257:%.*]] = icmp eq i32 [[CONV1255]], [[CONV1256]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1257]], label [[IF_THEN1259:%.*]], label [[IF_END1260:%.*]]
// SIMD-ONLY0:       if.then1259:
// SIMD-ONLY0-NEXT:    [[TMP782:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP782]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1260]]
// SIMD-ONLY0:       if.end1260:
// SIMD-ONLY0-NEXT:    [[TMP783:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP783]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP784:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1261:%.*]] = zext i8 [[TMP784]] to i32
// SIMD-ONLY0-NEXT:    [[TMP785:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1262:%.*]] = zext i8 [[TMP785]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1263:%.*]] = icmp eq i32 [[CONV1261]], [[CONV1262]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1263]], label [[IF_THEN1265:%.*]], label [[IF_END1266:%.*]]
// SIMD-ONLY0:       if.then1265:
// SIMD-ONLY0-NEXT:    [[TMP786:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP786]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1266]]
// SIMD-ONLY0:       if.end1266:
// SIMD-ONLY0-NEXT:    [[TMP787:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP787]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP788:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1267:%.*]] = zext i8 [[TMP788]] to i32
// SIMD-ONLY0-NEXT:    [[TMP789:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1268:%.*]] = zext i8 [[TMP789]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1269:%.*]] = icmp eq i32 [[CONV1267]], [[CONV1268]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1269]], label [[IF_THEN1271:%.*]], label [[IF_ELSE1272:%.*]]
// SIMD-ONLY0:       if.then1271:
// SIMD-ONLY0-NEXT:    [[TMP790:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP790]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1273:%.*]]
// SIMD-ONLY0:       if.else1272:
// SIMD-ONLY0-NEXT:    [[TMP791:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP791]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1273]]
// SIMD-ONLY0:       if.end1273:
// SIMD-ONLY0-NEXT:    [[TMP792:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1274:%.*]] = zext i8 [[TMP792]] to i32
// SIMD-ONLY0-NEXT:    [[TMP793:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1275:%.*]] = zext i8 [[TMP793]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1276:%.*]] = icmp eq i32 [[CONV1274]], [[CONV1275]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1276]], label [[IF_THEN1278:%.*]], label [[IF_ELSE1279:%.*]]
// SIMD-ONLY0:       if.then1278:
// SIMD-ONLY0-NEXT:    [[TMP794:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP794]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1280:%.*]]
// SIMD-ONLY0:       if.else1279:
// SIMD-ONLY0-NEXT:    [[TMP795:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP795]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1280]]
// SIMD-ONLY0:       if.end1280:
// SIMD-ONLY0-NEXT:    [[TMP796:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1281:%.*]] = zext i8 [[TMP796]] to i32
// SIMD-ONLY0-NEXT:    [[TMP797:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1282:%.*]] = zext i8 [[TMP797]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1283:%.*]] = icmp eq i32 [[CONV1281]], [[CONV1282]]
// SIMD-ONLY0-NEXT:    [[CONV1284:%.*]] = zext i1 [[CMP1283]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1285:%.*]] = trunc i32 [[CONV1284]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1285]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP798:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1286:%.*]] = icmp ne i8 [[TMP798]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1286]], label [[IF_THEN1287:%.*]], label [[IF_END1288:%.*]]
// SIMD-ONLY0:       if.then1287:
// SIMD-ONLY0-NEXT:    [[TMP799:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP799]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1288]]
// SIMD-ONLY0:       if.end1288:
// SIMD-ONLY0-NEXT:    [[TMP800:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1289:%.*]] = zext i8 [[TMP800]] to i32
// SIMD-ONLY0-NEXT:    [[TMP801:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1290:%.*]] = zext i8 [[TMP801]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1291:%.*]] = icmp eq i32 [[CONV1289]], [[CONV1290]]
// SIMD-ONLY0-NEXT:    [[CONV1292:%.*]] = zext i1 [[CMP1291]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1293:%.*]] = trunc i32 [[CONV1292]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1293]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP802:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1294:%.*]] = icmp ne i8 [[TMP802]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1294]], label [[IF_THEN1295:%.*]], label [[IF_END1296:%.*]]
// SIMD-ONLY0:       if.then1295:
// SIMD-ONLY0-NEXT:    [[TMP803:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP803]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1296]]
// SIMD-ONLY0:       if.end1296:
// SIMD-ONLY0-NEXT:    [[TMP804:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1297:%.*]] = zext i8 [[TMP804]] to i32
// SIMD-ONLY0-NEXT:    [[TMP805:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1298:%.*]] = zext i8 [[TMP805]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1299:%.*]] = icmp eq i32 [[CONV1297]], [[CONV1298]]
// SIMD-ONLY0-NEXT:    [[CONV1300:%.*]] = zext i1 [[CMP1299]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1301:%.*]] = trunc i32 [[CONV1300]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1301]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP806:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1302:%.*]] = icmp ne i8 [[TMP806]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1302]], label [[IF_THEN1303:%.*]], label [[IF_ELSE1304:%.*]]
// SIMD-ONLY0:       if.then1303:
// SIMD-ONLY0-NEXT:    [[TMP807:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP807]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1305:%.*]]
// SIMD-ONLY0:       if.else1304:
// SIMD-ONLY0-NEXT:    [[TMP808:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP808]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1305]]
// SIMD-ONLY0:       if.end1305:
// SIMD-ONLY0-NEXT:    [[TMP809:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1306:%.*]] = zext i8 [[TMP809]] to i32
// SIMD-ONLY0-NEXT:    [[TMP810:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1307:%.*]] = zext i8 [[TMP810]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1308:%.*]] = icmp eq i32 [[CONV1306]], [[CONV1307]]
// SIMD-ONLY0-NEXT:    [[CONV1309:%.*]] = zext i1 [[CMP1308]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1310:%.*]] = trunc i32 [[CONV1309]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1310]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP811:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1311:%.*]] = icmp ne i8 [[TMP811]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1311]], label [[IF_THEN1312:%.*]], label [[IF_ELSE1313:%.*]]
// SIMD-ONLY0:       if.then1312:
// SIMD-ONLY0-NEXT:    [[TMP812:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP812]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1314:%.*]]
// SIMD-ONLY0:       if.else1313:
// SIMD-ONLY0-NEXT:    [[TMP813:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP813]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1314]]
// SIMD-ONLY0:       if.end1314:
// SIMD-ONLY0-NEXT:    [[TMP814:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP814]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP815:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1315:%.*]] = zext i8 [[TMP815]] to i32
// SIMD-ONLY0-NEXT:    [[TMP816:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1316:%.*]] = zext i8 [[TMP816]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1317:%.*]] = icmp sgt i32 [[CONV1315]], [[CONV1316]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1317]], label [[IF_THEN1319:%.*]], label [[IF_END1320:%.*]]
// SIMD-ONLY0:       if.then1319:
// SIMD-ONLY0-NEXT:    [[TMP817:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP817]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1320]]
// SIMD-ONLY0:       if.end1320:
// SIMD-ONLY0-NEXT:    [[TMP818:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP818]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP819:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1321:%.*]] = zext i8 [[TMP819]] to i32
// SIMD-ONLY0-NEXT:    [[TMP820:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1322:%.*]] = zext i8 [[TMP820]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1323:%.*]] = icmp sgt i32 [[CONV1321]], [[CONV1322]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1323]], label [[IF_THEN1325:%.*]], label [[IF_END1326:%.*]]
// SIMD-ONLY0:       if.then1325:
// SIMD-ONLY0-NEXT:    [[TMP821:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP821]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1326]]
// SIMD-ONLY0:       if.end1326:
// SIMD-ONLY0-NEXT:    [[TMP822:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP822]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP823:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1327:%.*]] = zext i8 [[TMP823]] to i32
// SIMD-ONLY0-NEXT:    [[TMP824:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1328:%.*]] = zext i8 [[TMP824]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1329:%.*]] = icmp slt i32 [[CONV1327]], [[CONV1328]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1329]], label [[IF_THEN1331:%.*]], label [[IF_END1332:%.*]]
// SIMD-ONLY0:       if.then1331:
// SIMD-ONLY0-NEXT:    [[TMP825:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP825]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1332]]
// SIMD-ONLY0:       if.end1332:
// SIMD-ONLY0-NEXT:    [[TMP826:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP826]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP827:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1333:%.*]] = zext i8 [[TMP827]] to i32
// SIMD-ONLY0-NEXT:    [[TMP828:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1334:%.*]] = zext i8 [[TMP828]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1335:%.*]] = icmp slt i32 [[CONV1333]], [[CONV1334]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1335]], label [[IF_THEN1337:%.*]], label [[IF_END1338:%.*]]
// SIMD-ONLY0:       if.then1337:
// SIMD-ONLY0-NEXT:    [[TMP829:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP829]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1338]]
// SIMD-ONLY0:       if.end1338:
// SIMD-ONLY0-NEXT:    [[TMP830:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP830]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP831:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1339:%.*]] = zext i8 [[TMP831]] to i32
// SIMD-ONLY0-NEXT:    [[TMP832:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1340:%.*]] = zext i8 [[TMP832]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1341:%.*]] = icmp eq i32 [[CONV1339]], [[CONV1340]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1341]], label [[IF_THEN1343:%.*]], label [[IF_END1344:%.*]]
// SIMD-ONLY0:       if.then1343:
// SIMD-ONLY0-NEXT:    [[TMP833:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP833]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1344]]
// SIMD-ONLY0:       if.end1344:
// SIMD-ONLY0-NEXT:    [[TMP834:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP834]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP835:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1345:%.*]] = zext i8 [[TMP835]] to i32
// SIMD-ONLY0-NEXT:    [[TMP836:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1346:%.*]] = zext i8 [[TMP836]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1347:%.*]] = icmp eq i32 [[CONV1345]], [[CONV1346]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1347]], label [[IF_THEN1349:%.*]], label [[IF_END1350:%.*]]
// SIMD-ONLY0:       if.then1349:
// SIMD-ONLY0-NEXT:    [[TMP837:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP837]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1350]]
// SIMD-ONLY0:       if.end1350:
// SIMD-ONLY0-NEXT:    [[TMP838:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1351:%.*]] = zext i8 [[TMP838]] to i32
// SIMD-ONLY0-NEXT:    [[TMP839:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1352:%.*]] = zext i8 [[TMP839]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1353:%.*]] = icmp sgt i32 [[CONV1351]], [[CONV1352]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1353]], label [[IF_THEN1355:%.*]], label [[IF_END1356:%.*]]
// SIMD-ONLY0:       if.then1355:
// SIMD-ONLY0-NEXT:    [[TMP840:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP840]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1356]]
// SIMD-ONLY0:       if.end1356:
// SIMD-ONLY0-NEXT:    [[TMP841:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP841]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP842:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1357:%.*]] = zext i8 [[TMP842]] to i32
// SIMD-ONLY0-NEXT:    [[TMP843:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1358:%.*]] = zext i8 [[TMP843]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1359:%.*]] = icmp sgt i32 [[CONV1357]], [[CONV1358]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1359]], label [[IF_THEN1361:%.*]], label [[IF_END1362:%.*]]
// SIMD-ONLY0:       if.then1361:
// SIMD-ONLY0-NEXT:    [[TMP844:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP844]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1362]]
// SIMD-ONLY0:       if.end1362:
// SIMD-ONLY0-NEXT:    [[TMP845:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP845]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP846:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1363:%.*]] = zext i8 [[TMP846]] to i32
// SIMD-ONLY0-NEXT:    [[TMP847:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1364:%.*]] = zext i8 [[TMP847]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1365:%.*]] = icmp slt i32 [[CONV1363]], [[CONV1364]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1365]], label [[IF_THEN1367:%.*]], label [[IF_END1368:%.*]]
// SIMD-ONLY0:       if.then1367:
// SIMD-ONLY0-NEXT:    [[TMP848:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP848]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1368]]
// SIMD-ONLY0:       if.end1368:
// SIMD-ONLY0-NEXT:    [[TMP849:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP849]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP850:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1369:%.*]] = zext i8 [[TMP850]] to i32
// SIMD-ONLY0-NEXT:    [[TMP851:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1370:%.*]] = zext i8 [[TMP851]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1371:%.*]] = icmp slt i32 [[CONV1369]], [[CONV1370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1371]], label [[IF_THEN1373:%.*]], label [[IF_END1374:%.*]]
// SIMD-ONLY0:       if.then1373:
// SIMD-ONLY0-NEXT:    [[TMP852:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP852]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1374]]
// SIMD-ONLY0:       if.end1374:
// SIMD-ONLY0-NEXT:    [[TMP853:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP853]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP854:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1375:%.*]] = zext i8 [[TMP854]] to i32
// SIMD-ONLY0-NEXT:    [[TMP855:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1376:%.*]] = zext i8 [[TMP855]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1377:%.*]] = icmp eq i32 [[CONV1375]], [[CONV1376]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1377]], label [[IF_THEN1379:%.*]], label [[IF_END1380:%.*]]
// SIMD-ONLY0:       if.then1379:
// SIMD-ONLY0-NEXT:    [[TMP856:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP856]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1380]]
// SIMD-ONLY0:       if.end1380:
// SIMD-ONLY0-NEXT:    [[TMP857:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP857]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP858:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1381:%.*]] = zext i8 [[TMP858]] to i32
// SIMD-ONLY0-NEXT:    [[TMP859:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1382:%.*]] = zext i8 [[TMP859]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1383:%.*]] = icmp eq i32 [[CONV1381]], [[CONV1382]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1383]], label [[IF_THEN1385:%.*]], label [[IF_END1386:%.*]]
// SIMD-ONLY0:       if.then1385:
// SIMD-ONLY0-NEXT:    [[TMP860:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP860]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1386]]
// SIMD-ONLY0:       if.end1386:
// SIMD-ONLY0-NEXT:    [[TMP861:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP861]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP862:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1387:%.*]] = zext i8 [[TMP862]] to i32
// SIMD-ONLY0-NEXT:    [[TMP863:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1388:%.*]] = zext i8 [[TMP863]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1389:%.*]] = icmp eq i32 [[CONV1387]], [[CONV1388]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1389]], label [[IF_THEN1391:%.*]], label [[IF_ELSE1392:%.*]]
// SIMD-ONLY0:       if.then1391:
// SIMD-ONLY0-NEXT:    [[TMP864:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP864]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1393:%.*]]
// SIMD-ONLY0:       if.else1392:
// SIMD-ONLY0-NEXT:    [[TMP865:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP865]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1393]]
// SIMD-ONLY0:       if.end1393:
// SIMD-ONLY0-NEXT:    [[TMP866:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1394:%.*]] = zext i8 [[TMP866]] to i32
// SIMD-ONLY0-NEXT:    [[TMP867:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1395:%.*]] = zext i8 [[TMP867]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1396:%.*]] = icmp eq i32 [[CONV1394]], [[CONV1395]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1396]], label [[IF_THEN1398:%.*]], label [[IF_ELSE1399:%.*]]
// SIMD-ONLY0:       if.then1398:
// SIMD-ONLY0-NEXT:    [[TMP868:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP868]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1400:%.*]]
// SIMD-ONLY0:       if.else1399:
// SIMD-ONLY0-NEXT:    [[TMP869:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP869]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1400]]
// SIMD-ONLY0:       if.end1400:
// SIMD-ONLY0-NEXT:    [[TMP870:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1401:%.*]] = zext i8 [[TMP870]] to i32
// SIMD-ONLY0-NEXT:    [[TMP871:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1402:%.*]] = zext i8 [[TMP871]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1403:%.*]] = icmp eq i32 [[CONV1401]], [[CONV1402]]
// SIMD-ONLY0-NEXT:    [[CONV1404:%.*]] = zext i1 [[CMP1403]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1405:%.*]] = trunc i32 [[CONV1404]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1405]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP872:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1406:%.*]] = icmp ne i8 [[TMP872]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1406]], label [[IF_THEN1407:%.*]], label [[IF_END1408:%.*]]
// SIMD-ONLY0:       if.then1407:
// SIMD-ONLY0-NEXT:    [[TMP873:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP873]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1408]]
// SIMD-ONLY0:       if.end1408:
// SIMD-ONLY0-NEXT:    [[TMP874:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1409:%.*]] = zext i8 [[TMP874]] to i32
// SIMD-ONLY0-NEXT:    [[TMP875:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1410:%.*]] = zext i8 [[TMP875]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1411:%.*]] = icmp eq i32 [[CONV1409]], [[CONV1410]]
// SIMD-ONLY0-NEXT:    [[CONV1412:%.*]] = zext i1 [[CMP1411]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1413:%.*]] = trunc i32 [[CONV1412]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1413]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP876:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1414:%.*]] = icmp ne i8 [[TMP876]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1414]], label [[IF_THEN1415:%.*]], label [[IF_END1416:%.*]]
// SIMD-ONLY0:       if.then1415:
// SIMD-ONLY0-NEXT:    [[TMP877:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP877]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1416]]
// SIMD-ONLY0:       if.end1416:
// SIMD-ONLY0-NEXT:    [[TMP878:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1417:%.*]] = zext i8 [[TMP878]] to i32
// SIMD-ONLY0-NEXT:    [[TMP879:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1418:%.*]] = zext i8 [[TMP879]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1419:%.*]] = icmp eq i32 [[CONV1417]], [[CONV1418]]
// SIMD-ONLY0-NEXT:    [[CONV1420:%.*]] = zext i1 [[CMP1419]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1421:%.*]] = trunc i32 [[CONV1420]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1421]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP880:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1422:%.*]] = icmp ne i8 [[TMP880]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1422]], label [[IF_THEN1423:%.*]], label [[IF_ELSE1424:%.*]]
// SIMD-ONLY0:       if.then1423:
// SIMD-ONLY0-NEXT:    [[TMP881:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP881]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1425:%.*]]
// SIMD-ONLY0:       if.else1424:
// SIMD-ONLY0-NEXT:    [[TMP882:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP882]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1425]]
// SIMD-ONLY0:       if.end1425:
// SIMD-ONLY0-NEXT:    [[TMP883:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1426:%.*]] = zext i8 [[TMP883]] to i32
// SIMD-ONLY0-NEXT:    [[TMP884:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1427:%.*]] = zext i8 [[TMP884]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1428:%.*]] = icmp eq i32 [[CONV1426]], [[CONV1427]]
// SIMD-ONLY0-NEXT:    [[CONV1429:%.*]] = zext i1 [[CMP1428]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1430:%.*]] = trunc i32 [[CONV1429]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV1430]], ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TMP885:%.*]] = load i8, ptr [[UCR]], align 1
// SIMD-ONLY0-NEXT:    [[TOBOOL1431:%.*]] = icmp ne i8 [[TMP885]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1431]], label [[IF_THEN1432:%.*]], label [[IF_ELSE1433:%.*]]
// SIMD-ONLY0:       if.then1432:
// SIMD-ONLY0-NEXT:    [[TMP886:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP886]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1434:%.*]]
// SIMD-ONLY0:       if.else1433:
// SIMD-ONLY0-NEXT:    [[TMP887:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP887]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    br label [[IF_END1434]]
// SIMD-ONLY0:       if.end1434:
// SIMD-ONLY0-NEXT:    [[TMP888:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP888]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP889:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1435:%.*]] = sext i16 [[TMP889]] to i32
// SIMD-ONLY0-NEXT:    [[TMP890:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1436:%.*]] = sext i16 [[TMP890]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1437:%.*]] = icmp sgt i32 [[CONV1435]], [[CONV1436]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1437]], label [[IF_THEN1439:%.*]], label [[IF_END1440:%.*]]
// SIMD-ONLY0:       if.then1439:
// SIMD-ONLY0-NEXT:    [[TMP891:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP891]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1440]]
// SIMD-ONLY0:       if.end1440:
// SIMD-ONLY0-NEXT:    [[TMP892:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP892]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP893:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1441:%.*]] = sext i16 [[TMP893]] to i32
// SIMD-ONLY0-NEXT:    [[TMP894:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1442:%.*]] = sext i16 [[TMP894]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1443:%.*]] = icmp sgt i32 [[CONV1441]], [[CONV1442]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1443]], label [[IF_THEN1445:%.*]], label [[IF_END1446:%.*]]
// SIMD-ONLY0:       if.then1445:
// SIMD-ONLY0-NEXT:    [[TMP895:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP895]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1446]]
// SIMD-ONLY0:       if.end1446:
// SIMD-ONLY0-NEXT:    [[TMP896:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP896]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP897:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1447:%.*]] = sext i16 [[TMP897]] to i32
// SIMD-ONLY0-NEXT:    [[TMP898:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1448:%.*]] = sext i16 [[TMP898]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1449:%.*]] = icmp slt i32 [[CONV1447]], [[CONV1448]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1449]], label [[IF_THEN1451:%.*]], label [[IF_END1452:%.*]]
// SIMD-ONLY0:       if.then1451:
// SIMD-ONLY0-NEXT:    [[TMP899:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP899]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1452]]
// SIMD-ONLY0:       if.end1452:
// SIMD-ONLY0-NEXT:    [[TMP900:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP900]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP901:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1453:%.*]] = sext i16 [[TMP901]] to i32
// SIMD-ONLY0-NEXT:    [[TMP902:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1454:%.*]] = sext i16 [[TMP902]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1455:%.*]] = icmp slt i32 [[CONV1453]], [[CONV1454]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1455]], label [[IF_THEN1457:%.*]], label [[IF_END1458:%.*]]
// SIMD-ONLY0:       if.then1457:
// SIMD-ONLY0-NEXT:    [[TMP903:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP903]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1458]]
// SIMD-ONLY0:       if.end1458:
// SIMD-ONLY0-NEXT:    [[TMP904:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP904]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP905:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1459:%.*]] = sext i16 [[TMP905]] to i32
// SIMD-ONLY0-NEXT:    [[TMP906:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1460:%.*]] = sext i16 [[TMP906]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1461:%.*]] = icmp eq i32 [[CONV1459]], [[CONV1460]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1461]], label [[IF_THEN1463:%.*]], label [[IF_END1464:%.*]]
// SIMD-ONLY0:       if.then1463:
// SIMD-ONLY0-NEXT:    [[TMP907:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP907]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1464]]
// SIMD-ONLY0:       if.end1464:
// SIMD-ONLY0-NEXT:    [[TMP908:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP908]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP909:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1465:%.*]] = sext i16 [[TMP909]] to i32
// SIMD-ONLY0-NEXT:    [[TMP910:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1466:%.*]] = sext i16 [[TMP910]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1467:%.*]] = icmp eq i32 [[CONV1465]], [[CONV1466]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1467]], label [[IF_THEN1469:%.*]], label [[IF_END1470:%.*]]
// SIMD-ONLY0:       if.then1469:
// SIMD-ONLY0-NEXT:    [[TMP911:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP911]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1470]]
// SIMD-ONLY0:       if.end1470:
// SIMD-ONLY0-NEXT:    [[TMP912:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1471:%.*]] = sext i16 [[TMP912]] to i32
// SIMD-ONLY0-NEXT:    [[TMP913:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1472:%.*]] = sext i16 [[TMP913]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1473:%.*]] = icmp sgt i32 [[CONV1471]], [[CONV1472]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1473]], label [[IF_THEN1475:%.*]], label [[IF_END1476:%.*]]
// SIMD-ONLY0:       if.then1475:
// SIMD-ONLY0-NEXT:    [[TMP914:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP914]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1476]]
// SIMD-ONLY0:       if.end1476:
// SIMD-ONLY0-NEXT:    [[TMP915:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP915]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP916:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1477:%.*]] = sext i16 [[TMP916]] to i32
// SIMD-ONLY0-NEXT:    [[TMP917:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1478:%.*]] = sext i16 [[TMP917]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1479:%.*]] = icmp sgt i32 [[CONV1477]], [[CONV1478]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1479]], label [[IF_THEN1481:%.*]], label [[IF_END1482:%.*]]
// SIMD-ONLY0:       if.then1481:
// SIMD-ONLY0-NEXT:    [[TMP918:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP918]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1482]]
// SIMD-ONLY0:       if.end1482:
// SIMD-ONLY0-NEXT:    [[TMP919:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP919]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP920:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1483:%.*]] = sext i16 [[TMP920]] to i32
// SIMD-ONLY0-NEXT:    [[TMP921:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1484:%.*]] = sext i16 [[TMP921]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1485:%.*]] = icmp slt i32 [[CONV1483]], [[CONV1484]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1485]], label [[IF_THEN1487:%.*]], label [[IF_END1488:%.*]]
// SIMD-ONLY0:       if.then1487:
// SIMD-ONLY0-NEXT:    [[TMP922:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP922]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1488]]
// SIMD-ONLY0:       if.end1488:
// SIMD-ONLY0-NEXT:    [[TMP923:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP923]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP924:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1489:%.*]] = sext i16 [[TMP924]] to i32
// SIMD-ONLY0-NEXT:    [[TMP925:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1490:%.*]] = sext i16 [[TMP925]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1491:%.*]] = icmp slt i32 [[CONV1489]], [[CONV1490]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1491]], label [[IF_THEN1493:%.*]], label [[IF_END1494:%.*]]
// SIMD-ONLY0:       if.then1493:
// SIMD-ONLY0-NEXT:    [[TMP926:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP926]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1494]]
// SIMD-ONLY0:       if.end1494:
// SIMD-ONLY0-NEXT:    [[TMP927:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP927]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP928:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1495:%.*]] = sext i16 [[TMP928]] to i32
// SIMD-ONLY0-NEXT:    [[TMP929:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1496:%.*]] = sext i16 [[TMP929]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1497:%.*]] = icmp eq i32 [[CONV1495]], [[CONV1496]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1497]], label [[IF_THEN1499:%.*]], label [[IF_END1500:%.*]]
// SIMD-ONLY0:       if.then1499:
// SIMD-ONLY0-NEXT:    [[TMP930:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP930]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1500]]
// SIMD-ONLY0:       if.end1500:
// SIMD-ONLY0-NEXT:    [[TMP931:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP931]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP932:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1501:%.*]] = sext i16 [[TMP932]] to i32
// SIMD-ONLY0-NEXT:    [[TMP933:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1502:%.*]] = sext i16 [[TMP933]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1503:%.*]] = icmp eq i32 [[CONV1501]], [[CONV1502]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1503]], label [[IF_THEN1505:%.*]], label [[IF_END1506:%.*]]
// SIMD-ONLY0:       if.then1505:
// SIMD-ONLY0-NEXT:    [[TMP934:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP934]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1506]]
// SIMD-ONLY0:       if.end1506:
// SIMD-ONLY0-NEXT:    [[TMP935:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP935]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP936:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1507:%.*]] = sext i16 [[TMP936]] to i32
// SIMD-ONLY0-NEXT:    [[TMP937:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1508:%.*]] = sext i16 [[TMP937]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1509:%.*]] = icmp eq i32 [[CONV1507]], [[CONV1508]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1509]], label [[IF_THEN1511:%.*]], label [[IF_ELSE1512:%.*]]
// SIMD-ONLY0:       if.then1511:
// SIMD-ONLY0-NEXT:    [[TMP938:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP938]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1513:%.*]]
// SIMD-ONLY0:       if.else1512:
// SIMD-ONLY0-NEXT:    [[TMP939:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP939]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1513]]
// SIMD-ONLY0:       if.end1513:
// SIMD-ONLY0-NEXT:    [[TMP940:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1514:%.*]] = sext i16 [[TMP940]] to i32
// SIMD-ONLY0-NEXT:    [[TMP941:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1515:%.*]] = sext i16 [[TMP941]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1516:%.*]] = icmp eq i32 [[CONV1514]], [[CONV1515]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1516]], label [[IF_THEN1518:%.*]], label [[IF_ELSE1519:%.*]]
// SIMD-ONLY0:       if.then1518:
// SIMD-ONLY0-NEXT:    [[TMP942:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP942]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1520:%.*]]
// SIMD-ONLY0:       if.else1519:
// SIMD-ONLY0-NEXT:    [[TMP943:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP943]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1520]]
// SIMD-ONLY0:       if.end1520:
// SIMD-ONLY0-NEXT:    [[TMP944:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1521:%.*]] = sext i16 [[TMP944]] to i32
// SIMD-ONLY0-NEXT:    [[TMP945:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1522:%.*]] = sext i16 [[TMP945]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1523:%.*]] = icmp eq i32 [[CONV1521]], [[CONV1522]]
// SIMD-ONLY0-NEXT:    [[CONV1524:%.*]] = zext i1 [[CMP1523]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1525:%.*]] = trunc i32 [[CONV1524]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1525]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP946:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1526:%.*]] = icmp ne i16 [[TMP946]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1526]], label [[IF_THEN1527:%.*]], label [[IF_END1528:%.*]]
// SIMD-ONLY0:       if.then1527:
// SIMD-ONLY0-NEXT:    [[TMP947:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP947]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1528]]
// SIMD-ONLY0:       if.end1528:
// SIMD-ONLY0-NEXT:    [[TMP948:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1529:%.*]] = sext i16 [[TMP948]] to i32
// SIMD-ONLY0-NEXT:    [[TMP949:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1530:%.*]] = sext i16 [[TMP949]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1531:%.*]] = icmp eq i32 [[CONV1529]], [[CONV1530]]
// SIMD-ONLY0-NEXT:    [[CONV1532:%.*]] = zext i1 [[CMP1531]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1533:%.*]] = trunc i32 [[CONV1532]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1533]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP950:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1534:%.*]] = icmp ne i16 [[TMP950]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1534]], label [[IF_THEN1535:%.*]], label [[IF_END1536:%.*]]
// SIMD-ONLY0:       if.then1535:
// SIMD-ONLY0-NEXT:    [[TMP951:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP951]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1536]]
// SIMD-ONLY0:       if.end1536:
// SIMD-ONLY0-NEXT:    [[TMP952:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1537:%.*]] = sext i16 [[TMP952]] to i32
// SIMD-ONLY0-NEXT:    [[TMP953:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1538:%.*]] = sext i16 [[TMP953]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1539:%.*]] = icmp eq i32 [[CONV1537]], [[CONV1538]]
// SIMD-ONLY0-NEXT:    [[CONV1540:%.*]] = zext i1 [[CMP1539]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1541:%.*]] = trunc i32 [[CONV1540]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1541]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP954:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1542:%.*]] = icmp ne i16 [[TMP954]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1542]], label [[IF_THEN1543:%.*]], label [[IF_ELSE1544:%.*]]
// SIMD-ONLY0:       if.then1543:
// SIMD-ONLY0-NEXT:    [[TMP955:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP955]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1545:%.*]]
// SIMD-ONLY0:       if.else1544:
// SIMD-ONLY0-NEXT:    [[TMP956:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP956]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1545]]
// SIMD-ONLY0:       if.end1545:
// SIMD-ONLY0-NEXT:    [[TMP957:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1546:%.*]] = sext i16 [[TMP957]] to i32
// SIMD-ONLY0-NEXT:    [[TMP958:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1547:%.*]] = sext i16 [[TMP958]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1548:%.*]] = icmp eq i32 [[CONV1546]], [[CONV1547]]
// SIMD-ONLY0-NEXT:    [[CONV1549:%.*]] = zext i1 [[CMP1548]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1550:%.*]] = trunc i32 [[CONV1549]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1550]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP959:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1551:%.*]] = icmp ne i16 [[TMP959]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1551]], label [[IF_THEN1552:%.*]], label [[IF_ELSE1553:%.*]]
// SIMD-ONLY0:       if.then1552:
// SIMD-ONLY0-NEXT:    [[TMP960:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP960]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1554:%.*]]
// SIMD-ONLY0:       if.else1553:
// SIMD-ONLY0-NEXT:    [[TMP961:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP961]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1554]]
// SIMD-ONLY0:       if.end1554:
// SIMD-ONLY0-NEXT:    [[TMP962:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP962]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP963:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1555:%.*]] = sext i16 [[TMP963]] to i32
// SIMD-ONLY0-NEXT:    [[TMP964:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1556:%.*]] = sext i16 [[TMP964]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1557:%.*]] = icmp sgt i32 [[CONV1555]], [[CONV1556]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1557]], label [[IF_THEN1559:%.*]], label [[IF_END1560:%.*]]
// SIMD-ONLY0:       if.then1559:
// SIMD-ONLY0-NEXT:    [[TMP965:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP965]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1560]]
// SIMD-ONLY0:       if.end1560:
// SIMD-ONLY0-NEXT:    [[TMP966:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP966]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP967:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1561:%.*]] = sext i16 [[TMP967]] to i32
// SIMD-ONLY0-NEXT:    [[TMP968:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1562:%.*]] = sext i16 [[TMP968]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1563:%.*]] = icmp sgt i32 [[CONV1561]], [[CONV1562]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1563]], label [[IF_THEN1565:%.*]], label [[IF_END1566:%.*]]
// SIMD-ONLY0:       if.then1565:
// SIMD-ONLY0-NEXT:    [[TMP969:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP969]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1566]]
// SIMD-ONLY0:       if.end1566:
// SIMD-ONLY0-NEXT:    [[TMP970:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP970]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP971:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1567:%.*]] = sext i16 [[TMP971]] to i32
// SIMD-ONLY0-NEXT:    [[TMP972:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1568:%.*]] = sext i16 [[TMP972]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1569:%.*]] = icmp slt i32 [[CONV1567]], [[CONV1568]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1569]], label [[IF_THEN1571:%.*]], label [[IF_END1572:%.*]]
// SIMD-ONLY0:       if.then1571:
// SIMD-ONLY0-NEXT:    [[TMP973:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP973]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1572]]
// SIMD-ONLY0:       if.end1572:
// SIMD-ONLY0-NEXT:    [[TMP974:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP974]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP975:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1573:%.*]] = sext i16 [[TMP975]] to i32
// SIMD-ONLY0-NEXT:    [[TMP976:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1574:%.*]] = sext i16 [[TMP976]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1575:%.*]] = icmp slt i32 [[CONV1573]], [[CONV1574]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1575]], label [[IF_THEN1577:%.*]], label [[IF_END1578:%.*]]
// SIMD-ONLY0:       if.then1577:
// SIMD-ONLY0-NEXT:    [[TMP977:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP977]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1578]]
// SIMD-ONLY0:       if.end1578:
// SIMD-ONLY0-NEXT:    [[TMP978:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP978]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP979:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1579:%.*]] = sext i16 [[TMP979]] to i32
// SIMD-ONLY0-NEXT:    [[TMP980:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1580:%.*]] = sext i16 [[TMP980]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1581:%.*]] = icmp eq i32 [[CONV1579]], [[CONV1580]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1581]], label [[IF_THEN1583:%.*]], label [[IF_END1584:%.*]]
// SIMD-ONLY0:       if.then1583:
// SIMD-ONLY0-NEXT:    [[TMP981:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP981]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1584]]
// SIMD-ONLY0:       if.end1584:
// SIMD-ONLY0-NEXT:    [[TMP982:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP982]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP983:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1585:%.*]] = sext i16 [[TMP983]] to i32
// SIMD-ONLY0-NEXT:    [[TMP984:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1586:%.*]] = sext i16 [[TMP984]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1587:%.*]] = icmp eq i32 [[CONV1585]], [[CONV1586]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1587]], label [[IF_THEN1589:%.*]], label [[IF_END1590:%.*]]
// SIMD-ONLY0:       if.then1589:
// SIMD-ONLY0-NEXT:    [[TMP985:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP985]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1590]]
// SIMD-ONLY0:       if.end1590:
// SIMD-ONLY0-NEXT:    [[TMP986:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1591:%.*]] = sext i16 [[TMP986]] to i32
// SIMD-ONLY0-NEXT:    [[TMP987:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1592:%.*]] = sext i16 [[TMP987]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1593:%.*]] = icmp sgt i32 [[CONV1591]], [[CONV1592]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1593]], label [[IF_THEN1595:%.*]], label [[IF_END1596:%.*]]
// SIMD-ONLY0:       if.then1595:
// SIMD-ONLY0-NEXT:    [[TMP988:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP988]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1596]]
// SIMD-ONLY0:       if.end1596:
// SIMD-ONLY0-NEXT:    [[TMP989:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP989]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP990:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1597:%.*]] = sext i16 [[TMP990]] to i32
// SIMD-ONLY0-NEXT:    [[TMP991:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1598:%.*]] = sext i16 [[TMP991]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1599:%.*]] = icmp sgt i32 [[CONV1597]], [[CONV1598]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1599]], label [[IF_THEN1601:%.*]], label [[IF_END1602:%.*]]
// SIMD-ONLY0:       if.then1601:
// SIMD-ONLY0-NEXT:    [[TMP992:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP992]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1602]]
// SIMD-ONLY0:       if.end1602:
// SIMD-ONLY0-NEXT:    [[TMP993:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP993]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP994:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1603:%.*]] = sext i16 [[TMP994]] to i32
// SIMD-ONLY0-NEXT:    [[TMP995:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1604:%.*]] = sext i16 [[TMP995]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1605:%.*]] = icmp slt i32 [[CONV1603]], [[CONV1604]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1605]], label [[IF_THEN1607:%.*]], label [[IF_END1608:%.*]]
// SIMD-ONLY0:       if.then1607:
// SIMD-ONLY0-NEXT:    [[TMP996:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP996]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1608]]
// SIMD-ONLY0:       if.end1608:
// SIMD-ONLY0-NEXT:    [[TMP997:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP997]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP998:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1609:%.*]] = sext i16 [[TMP998]] to i32
// SIMD-ONLY0-NEXT:    [[TMP999:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1610:%.*]] = sext i16 [[TMP999]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1611:%.*]] = icmp slt i32 [[CONV1609]], [[CONV1610]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1611]], label [[IF_THEN1613:%.*]], label [[IF_END1614:%.*]]
// SIMD-ONLY0:       if.then1613:
// SIMD-ONLY0-NEXT:    [[TMP1000:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1000]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1614]]
// SIMD-ONLY0:       if.end1614:
// SIMD-ONLY0-NEXT:    [[TMP1001:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1001]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1002:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1615:%.*]] = sext i16 [[TMP1002]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1003:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1616:%.*]] = sext i16 [[TMP1003]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1617:%.*]] = icmp eq i32 [[CONV1615]], [[CONV1616]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1617]], label [[IF_THEN1619:%.*]], label [[IF_END1620:%.*]]
// SIMD-ONLY0:       if.then1619:
// SIMD-ONLY0-NEXT:    [[TMP1004:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1004]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1620]]
// SIMD-ONLY0:       if.end1620:
// SIMD-ONLY0-NEXT:    [[TMP1005:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1005]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1006:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1621:%.*]] = sext i16 [[TMP1006]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1007:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1622:%.*]] = sext i16 [[TMP1007]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1623:%.*]] = icmp eq i32 [[CONV1621]], [[CONV1622]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1623]], label [[IF_THEN1625:%.*]], label [[IF_END1626:%.*]]
// SIMD-ONLY0:       if.then1625:
// SIMD-ONLY0-NEXT:    [[TMP1008:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1008]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1626]]
// SIMD-ONLY0:       if.end1626:
// SIMD-ONLY0-NEXT:    [[TMP1009:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1009]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1010:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1627:%.*]] = sext i16 [[TMP1010]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1011:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1628:%.*]] = sext i16 [[TMP1011]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1629:%.*]] = icmp eq i32 [[CONV1627]], [[CONV1628]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1629]], label [[IF_THEN1631:%.*]], label [[IF_ELSE1632:%.*]]
// SIMD-ONLY0:       if.then1631:
// SIMD-ONLY0-NEXT:    [[TMP1012:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1012]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1633:%.*]]
// SIMD-ONLY0:       if.else1632:
// SIMD-ONLY0-NEXT:    [[TMP1013:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1013]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1633]]
// SIMD-ONLY0:       if.end1633:
// SIMD-ONLY0-NEXT:    [[TMP1014:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1634:%.*]] = sext i16 [[TMP1014]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1015:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1635:%.*]] = sext i16 [[TMP1015]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1636:%.*]] = icmp eq i32 [[CONV1634]], [[CONV1635]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1636]], label [[IF_THEN1638:%.*]], label [[IF_ELSE1639:%.*]]
// SIMD-ONLY0:       if.then1638:
// SIMD-ONLY0-NEXT:    [[TMP1016:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1016]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1640:%.*]]
// SIMD-ONLY0:       if.else1639:
// SIMD-ONLY0-NEXT:    [[TMP1017:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1017]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1640]]
// SIMD-ONLY0:       if.end1640:
// SIMD-ONLY0-NEXT:    [[TMP1018:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1641:%.*]] = sext i16 [[TMP1018]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1019:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1642:%.*]] = sext i16 [[TMP1019]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1643:%.*]] = icmp eq i32 [[CONV1641]], [[CONV1642]]
// SIMD-ONLY0-NEXT:    [[CONV1644:%.*]] = zext i1 [[CMP1643]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1645:%.*]] = trunc i32 [[CONV1644]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1645]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1020:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1646:%.*]] = icmp ne i16 [[TMP1020]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1646]], label [[IF_THEN1647:%.*]], label [[IF_END1648:%.*]]
// SIMD-ONLY0:       if.then1647:
// SIMD-ONLY0-NEXT:    [[TMP1021:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1021]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1648]]
// SIMD-ONLY0:       if.end1648:
// SIMD-ONLY0-NEXT:    [[TMP1022:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1649:%.*]] = sext i16 [[TMP1022]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1023:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1650:%.*]] = sext i16 [[TMP1023]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1651:%.*]] = icmp eq i32 [[CONV1649]], [[CONV1650]]
// SIMD-ONLY0-NEXT:    [[CONV1652:%.*]] = zext i1 [[CMP1651]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1653:%.*]] = trunc i32 [[CONV1652]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1653]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1024:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1654:%.*]] = icmp ne i16 [[TMP1024]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1654]], label [[IF_THEN1655:%.*]], label [[IF_END1656:%.*]]
// SIMD-ONLY0:       if.then1655:
// SIMD-ONLY0-NEXT:    [[TMP1025:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1025]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1656]]
// SIMD-ONLY0:       if.end1656:
// SIMD-ONLY0-NEXT:    [[TMP1026:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1657:%.*]] = sext i16 [[TMP1026]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1027:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1658:%.*]] = sext i16 [[TMP1027]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1659:%.*]] = icmp eq i32 [[CONV1657]], [[CONV1658]]
// SIMD-ONLY0-NEXT:    [[CONV1660:%.*]] = zext i1 [[CMP1659]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1661:%.*]] = trunc i32 [[CONV1660]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1661]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1028:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1662:%.*]] = icmp ne i16 [[TMP1028]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1662]], label [[IF_THEN1663:%.*]], label [[IF_ELSE1664:%.*]]
// SIMD-ONLY0:       if.then1663:
// SIMD-ONLY0-NEXT:    [[TMP1029:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1029]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1665:%.*]]
// SIMD-ONLY0:       if.else1664:
// SIMD-ONLY0-NEXT:    [[TMP1030:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1030]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1665]]
// SIMD-ONLY0:       if.end1665:
// SIMD-ONLY0-NEXT:    [[TMP1031:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1666:%.*]] = sext i16 [[TMP1031]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1032:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1667:%.*]] = sext i16 [[TMP1032]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1668:%.*]] = icmp eq i32 [[CONV1666]], [[CONV1667]]
// SIMD-ONLY0-NEXT:    [[CONV1669:%.*]] = zext i1 [[CMP1668]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1670:%.*]] = trunc i32 [[CONV1669]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1670]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1033:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1671:%.*]] = icmp ne i16 [[TMP1033]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1671]], label [[IF_THEN1672:%.*]], label [[IF_ELSE1673:%.*]]
// SIMD-ONLY0:       if.then1672:
// SIMD-ONLY0-NEXT:    [[TMP1034:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1034]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1674:%.*]]
// SIMD-ONLY0:       if.else1673:
// SIMD-ONLY0-NEXT:    [[TMP1035:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1035]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1674]]
// SIMD-ONLY0:       if.end1674:
// SIMD-ONLY0-NEXT:    [[TMP1036:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1036]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1037:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1675:%.*]] = sext i16 [[TMP1037]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1038:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1676:%.*]] = sext i16 [[TMP1038]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1677:%.*]] = icmp sgt i32 [[CONV1675]], [[CONV1676]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1677]], label [[IF_THEN1679:%.*]], label [[IF_END1680:%.*]]
// SIMD-ONLY0:       if.then1679:
// SIMD-ONLY0-NEXT:    [[TMP1039:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1039]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1680]]
// SIMD-ONLY0:       if.end1680:
// SIMD-ONLY0-NEXT:    [[TMP1040:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1040]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1041:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1681:%.*]] = sext i16 [[TMP1041]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1042:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1682:%.*]] = sext i16 [[TMP1042]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1683:%.*]] = icmp sgt i32 [[CONV1681]], [[CONV1682]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1683]], label [[IF_THEN1685:%.*]], label [[IF_END1686:%.*]]
// SIMD-ONLY0:       if.then1685:
// SIMD-ONLY0-NEXT:    [[TMP1043:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1043]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1686]]
// SIMD-ONLY0:       if.end1686:
// SIMD-ONLY0-NEXT:    [[TMP1044:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1044]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1045:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1687:%.*]] = sext i16 [[TMP1045]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1046:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1688:%.*]] = sext i16 [[TMP1046]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1689:%.*]] = icmp slt i32 [[CONV1687]], [[CONV1688]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1689]], label [[IF_THEN1691:%.*]], label [[IF_END1692:%.*]]
// SIMD-ONLY0:       if.then1691:
// SIMD-ONLY0-NEXT:    [[TMP1047:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1047]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1692]]
// SIMD-ONLY0:       if.end1692:
// SIMD-ONLY0-NEXT:    [[TMP1048:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1048]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1049:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1693:%.*]] = sext i16 [[TMP1049]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1050:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1694:%.*]] = sext i16 [[TMP1050]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1695:%.*]] = icmp slt i32 [[CONV1693]], [[CONV1694]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1695]], label [[IF_THEN1697:%.*]], label [[IF_END1698:%.*]]
// SIMD-ONLY0:       if.then1697:
// SIMD-ONLY0-NEXT:    [[TMP1051:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1051]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1698]]
// SIMD-ONLY0:       if.end1698:
// SIMD-ONLY0-NEXT:    [[TMP1052:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1052]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1053:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1699:%.*]] = sext i16 [[TMP1053]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1054:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1700:%.*]] = sext i16 [[TMP1054]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1701:%.*]] = icmp eq i32 [[CONV1699]], [[CONV1700]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1701]], label [[IF_THEN1703:%.*]], label [[IF_END1704:%.*]]
// SIMD-ONLY0:       if.then1703:
// SIMD-ONLY0-NEXT:    [[TMP1055:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1055]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1704]]
// SIMD-ONLY0:       if.end1704:
// SIMD-ONLY0-NEXT:    [[TMP1056:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1056]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1057:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1705:%.*]] = sext i16 [[TMP1057]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1058:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1706:%.*]] = sext i16 [[TMP1058]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1707:%.*]] = icmp eq i32 [[CONV1705]], [[CONV1706]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1707]], label [[IF_THEN1709:%.*]], label [[IF_END1710:%.*]]
// SIMD-ONLY0:       if.then1709:
// SIMD-ONLY0-NEXT:    [[TMP1059:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1059]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1710]]
// SIMD-ONLY0:       if.end1710:
// SIMD-ONLY0-NEXT:    [[TMP1060:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1711:%.*]] = sext i16 [[TMP1060]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1061:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1712:%.*]] = sext i16 [[TMP1061]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1713:%.*]] = icmp sgt i32 [[CONV1711]], [[CONV1712]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1713]], label [[IF_THEN1715:%.*]], label [[IF_END1716:%.*]]
// SIMD-ONLY0:       if.then1715:
// SIMD-ONLY0-NEXT:    [[TMP1062:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1062]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1716]]
// SIMD-ONLY0:       if.end1716:
// SIMD-ONLY0-NEXT:    [[TMP1063:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1063]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1064:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1717:%.*]] = sext i16 [[TMP1064]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1065:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1718:%.*]] = sext i16 [[TMP1065]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1719:%.*]] = icmp sgt i32 [[CONV1717]], [[CONV1718]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1719]], label [[IF_THEN1721:%.*]], label [[IF_END1722:%.*]]
// SIMD-ONLY0:       if.then1721:
// SIMD-ONLY0-NEXT:    [[TMP1066:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1066]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1722]]
// SIMD-ONLY0:       if.end1722:
// SIMD-ONLY0-NEXT:    [[TMP1067:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1067]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1068:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1723:%.*]] = sext i16 [[TMP1068]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1069:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1724:%.*]] = sext i16 [[TMP1069]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1725:%.*]] = icmp slt i32 [[CONV1723]], [[CONV1724]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1725]], label [[IF_THEN1727:%.*]], label [[IF_END1728:%.*]]
// SIMD-ONLY0:       if.then1727:
// SIMD-ONLY0-NEXT:    [[TMP1070:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1070]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1728]]
// SIMD-ONLY0:       if.end1728:
// SIMD-ONLY0-NEXT:    [[TMP1071:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1071]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1072:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1729:%.*]] = sext i16 [[TMP1072]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1073:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1730:%.*]] = sext i16 [[TMP1073]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1731:%.*]] = icmp slt i32 [[CONV1729]], [[CONV1730]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1731]], label [[IF_THEN1733:%.*]], label [[IF_END1734:%.*]]
// SIMD-ONLY0:       if.then1733:
// SIMD-ONLY0-NEXT:    [[TMP1074:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1074]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1734]]
// SIMD-ONLY0:       if.end1734:
// SIMD-ONLY0-NEXT:    [[TMP1075:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1075]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1076:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1735:%.*]] = sext i16 [[TMP1076]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1077:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1736:%.*]] = sext i16 [[TMP1077]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1737:%.*]] = icmp eq i32 [[CONV1735]], [[CONV1736]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1737]], label [[IF_THEN1739:%.*]], label [[IF_END1740:%.*]]
// SIMD-ONLY0:       if.then1739:
// SIMD-ONLY0-NEXT:    [[TMP1078:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1078]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1740]]
// SIMD-ONLY0:       if.end1740:
// SIMD-ONLY0-NEXT:    [[TMP1079:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1079]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1080:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1741:%.*]] = sext i16 [[TMP1080]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1081:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1742:%.*]] = sext i16 [[TMP1081]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1743:%.*]] = icmp eq i32 [[CONV1741]], [[CONV1742]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1743]], label [[IF_THEN1745:%.*]], label [[IF_END1746:%.*]]
// SIMD-ONLY0:       if.then1745:
// SIMD-ONLY0-NEXT:    [[TMP1082:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1082]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1746]]
// SIMD-ONLY0:       if.end1746:
// SIMD-ONLY0-NEXT:    [[TMP1083:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1083]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1084:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1747:%.*]] = sext i16 [[TMP1084]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1085:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1748:%.*]] = sext i16 [[TMP1085]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1749:%.*]] = icmp eq i32 [[CONV1747]], [[CONV1748]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1749]], label [[IF_THEN1751:%.*]], label [[IF_ELSE1752:%.*]]
// SIMD-ONLY0:       if.then1751:
// SIMD-ONLY0-NEXT:    [[TMP1086:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1086]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1753:%.*]]
// SIMD-ONLY0:       if.else1752:
// SIMD-ONLY0-NEXT:    [[TMP1087:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1087]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1753]]
// SIMD-ONLY0:       if.end1753:
// SIMD-ONLY0-NEXT:    [[TMP1088:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1754:%.*]] = sext i16 [[TMP1088]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1089:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1755:%.*]] = sext i16 [[TMP1089]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1756:%.*]] = icmp eq i32 [[CONV1754]], [[CONV1755]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1756]], label [[IF_THEN1758:%.*]], label [[IF_ELSE1759:%.*]]
// SIMD-ONLY0:       if.then1758:
// SIMD-ONLY0-NEXT:    [[TMP1090:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1090]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1760:%.*]]
// SIMD-ONLY0:       if.else1759:
// SIMD-ONLY0-NEXT:    [[TMP1091:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1091]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1760]]
// SIMD-ONLY0:       if.end1760:
// SIMD-ONLY0-NEXT:    [[TMP1092:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1761:%.*]] = sext i16 [[TMP1092]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1093:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1762:%.*]] = sext i16 [[TMP1093]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1763:%.*]] = icmp eq i32 [[CONV1761]], [[CONV1762]]
// SIMD-ONLY0-NEXT:    [[CONV1764:%.*]] = zext i1 [[CMP1763]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1765:%.*]] = trunc i32 [[CONV1764]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1765]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1094:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1766:%.*]] = icmp ne i16 [[TMP1094]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1766]], label [[IF_THEN1767:%.*]], label [[IF_END1768:%.*]]
// SIMD-ONLY0:       if.then1767:
// SIMD-ONLY0-NEXT:    [[TMP1095:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1095]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1768]]
// SIMD-ONLY0:       if.end1768:
// SIMD-ONLY0-NEXT:    [[TMP1096:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1769:%.*]] = sext i16 [[TMP1096]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1097:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1770:%.*]] = sext i16 [[TMP1097]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1771:%.*]] = icmp eq i32 [[CONV1769]], [[CONV1770]]
// SIMD-ONLY0-NEXT:    [[CONV1772:%.*]] = zext i1 [[CMP1771]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1773:%.*]] = trunc i32 [[CONV1772]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1773]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1098:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1774:%.*]] = icmp ne i16 [[TMP1098]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1774]], label [[IF_THEN1775:%.*]], label [[IF_END1776:%.*]]
// SIMD-ONLY0:       if.then1775:
// SIMD-ONLY0-NEXT:    [[TMP1099:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1099]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1776]]
// SIMD-ONLY0:       if.end1776:
// SIMD-ONLY0-NEXT:    [[TMP1100:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1777:%.*]] = sext i16 [[TMP1100]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1101:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1778:%.*]] = sext i16 [[TMP1101]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1779:%.*]] = icmp eq i32 [[CONV1777]], [[CONV1778]]
// SIMD-ONLY0-NEXT:    [[CONV1780:%.*]] = zext i1 [[CMP1779]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1781:%.*]] = trunc i32 [[CONV1780]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1781]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1102:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1782:%.*]] = icmp ne i16 [[TMP1102]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1782]], label [[IF_THEN1783:%.*]], label [[IF_ELSE1784:%.*]]
// SIMD-ONLY0:       if.then1783:
// SIMD-ONLY0-NEXT:    [[TMP1103:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1103]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1785:%.*]]
// SIMD-ONLY0:       if.else1784:
// SIMD-ONLY0-NEXT:    [[TMP1104:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1104]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1785]]
// SIMD-ONLY0:       if.end1785:
// SIMD-ONLY0-NEXT:    [[TMP1105:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1786:%.*]] = sext i16 [[TMP1105]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1106:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1787:%.*]] = sext i16 [[TMP1106]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1788:%.*]] = icmp eq i32 [[CONV1786]], [[CONV1787]]
// SIMD-ONLY0-NEXT:    [[CONV1789:%.*]] = zext i1 [[CMP1788]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1790:%.*]] = trunc i32 [[CONV1789]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1790]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1107:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1791:%.*]] = icmp ne i16 [[TMP1107]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1791]], label [[IF_THEN1792:%.*]], label [[IF_ELSE1793:%.*]]
// SIMD-ONLY0:       if.then1792:
// SIMD-ONLY0-NEXT:    [[TMP1108:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1108]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1794:%.*]]
// SIMD-ONLY0:       if.else1793:
// SIMD-ONLY0-NEXT:    [[TMP1109:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1109]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1794]]
// SIMD-ONLY0:       if.end1794:
// SIMD-ONLY0-NEXT:    [[TMP1110:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1110]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1111:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1795:%.*]] = sext i16 [[TMP1111]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1112:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1796:%.*]] = sext i16 [[TMP1112]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1797:%.*]] = icmp sgt i32 [[CONV1795]], [[CONV1796]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1797]], label [[IF_THEN1799:%.*]], label [[IF_END1800:%.*]]
// SIMD-ONLY0:       if.then1799:
// SIMD-ONLY0-NEXT:    [[TMP1113:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1113]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1800]]
// SIMD-ONLY0:       if.end1800:
// SIMD-ONLY0-NEXT:    [[TMP1114:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1114]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1115:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1801:%.*]] = sext i16 [[TMP1115]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1116:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1802:%.*]] = sext i16 [[TMP1116]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1803:%.*]] = icmp sgt i32 [[CONV1801]], [[CONV1802]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1803]], label [[IF_THEN1805:%.*]], label [[IF_END1806:%.*]]
// SIMD-ONLY0:       if.then1805:
// SIMD-ONLY0-NEXT:    [[TMP1117:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1117]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1806]]
// SIMD-ONLY0:       if.end1806:
// SIMD-ONLY0-NEXT:    [[TMP1118:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1118]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1119:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1807:%.*]] = sext i16 [[TMP1119]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1120:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1808:%.*]] = sext i16 [[TMP1120]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1809:%.*]] = icmp slt i32 [[CONV1807]], [[CONV1808]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1809]], label [[IF_THEN1811:%.*]], label [[IF_END1812:%.*]]
// SIMD-ONLY0:       if.then1811:
// SIMD-ONLY0-NEXT:    [[TMP1121:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1121]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1812]]
// SIMD-ONLY0:       if.end1812:
// SIMD-ONLY0-NEXT:    [[TMP1122:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1122]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1123:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1813:%.*]] = sext i16 [[TMP1123]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1124:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1814:%.*]] = sext i16 [[TMP1124]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1815:%.*]] = icmp slt i32 [[CONV1813]], [[CONV1814]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1815]], label [[IF_THEN1817:%.*]], label [[IF_END1818:%.*]]
// SIMD-ONLY0:       if.then1817:
// SIMD-ONLY0-NEXT:    [[TMP1125:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1125]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1818]]
// SIMD-ONLY0:       if.end1818:
// SIMD-ONLY0-NEXT:    [[TMP1126:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1126]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1127:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1819:%.*]] = sext i16 [[TMP1127]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1128:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1820:%.*]] = sext i16 [[TMP1128]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1821:%.*]] = icmp eq i32 [[CONV1819]], [[CONV1820]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1821]], label [[IF_THEN1823:%.*]], label [[IF_END1824:%.*]]
// SIMD-ONLY0:       if.then1823:
// SIMD-ONLY0-NEXT:    [[TMP1129:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1129]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1824]]
// SIMD-ONLY0:       if.end1824:
// SIMD-ONLY0-NEXT:    [[TMP1130:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1130]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1131:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1825:%.*]] = sext i16 [[TMP1131]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1132:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1826:%.*]] = sext i16 [[TMP1132]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1827:%.*]] = icmp eq i32 [[CONV1825]], [[CONV1826]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1827]], label [[IF_THEN1829:%.*]], label [[IF_END1830:%.*]]
// SIMD-ONLY0:       if.then1829:
// SIMD-ONLY0-NEXT:    [[TMP1133:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1133]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1830]]
// SIMD-ONLY0:       if.end1830:
// SIMD-ONLY0-NEXT:    [[TMP1134:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1831:%.*]] = sext i16 [[TMP1134]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1135:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1832:%.*]] = sext i16 [[TMP1135]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1833:%.*]] = icmp sgt i32 [[CONV1831]], [[CONV1832]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1833]], label [[IF_THEN1835:%.*]], label [[IF_END1836:%.*]]
// SIMD-ONLY0:       if.then1835:
// SIMD-ONLY0-NEXT:    [[TMP1136:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1136]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1836]]
// SIMD-ONLY0:       if.end1836:
// SIMD-ONLY0-NEXT:    [[TMP1137:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1137]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1138:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1837:%.*]] = sext i16 [[TMP1138]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1139:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1838:%.*]] = sext i16 [[TMP1139]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1839:%.*]] = icmp sgt i32 [[CONV1837]], [[CONV1838]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1839]], label [[IF_THEN1841:%.*]], label [[IF_END1842:%.*]]
// SIMD-ONLY0:       if.then1841:
// SIMD-ONLY0-NEXT:    [[TMP1140:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1140]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1842]]
// SIMD-ONLY0:       if.end1842:
// SIMD-ONLY0-NEXT:    [[TMP1141:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1141]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1142:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1843:%.*]] = sext i16 [[TMP1142]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1143:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1844:%.*]] = sext i16 [[TMP1143]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1845:%.*]] = icmp slt i32 [[CONV1843]], [[CONV1844]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1845]], label [[IF_THEN1847:%.*]], label [[IF_END1848:%.*]]
// SIMD-ONLY0:       if.then1847:
// SIMD-ONLY0-NEXT:    [[TMP1144:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1144]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1848]]
// SIMD-ONLY0:       if.end1848:
// SIMD-ONLY0-NEXT:    [[TMP1145:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1145]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1146:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1849:%.*]] = sext i16 [[TMP1146]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1147:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1850:%.*]] = sext i16 [[TMP1147]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1851:%.*]] = icmp slt i32 [[CONV1849]], [[CONV1850]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1851]], label [[IF_THEN1853:%.*]], label [[IF_END1854:%.*]]
// SIMD-ONLY0:       if.then1853:
// SIMD-ONLY0-NEXT:    [[TMP1148:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1148]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1854]]
// SIMD-ONLY0:       if.end1854:
// SIMD-ONLY0-NEXT:    [[TMP1149:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1149]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1150:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1855:%.*]] = sext i16 [[TMP1150]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1151:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1856:%.*]] = sext i16 [[TMP1151]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1857:%.*]] = icmp eq i32 [[CONV1855]], [[CONV1856]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1857]], label [[IF_THEN1859:%.*]], label [[IF_END1860:%.*]]
// SIMD-ONLY0:       if.then1859:
// SIMD-ONLY0-NEXT:    [[TMP1152:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1152]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1860]]
// SIMD-ONLY0:       if.end1860:
// SIMD-ONLY0-NEXT:    [[TMP1153:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1153]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1154:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1861:%.*]] = sext i16 [[TMP1154]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1155:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1862:%.*]] = sext i16 [[TMP1155]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1863:%.*]] = icmp eq i32 [[CONV1861]], [[CONV1862]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1863]], label [[IF_THEN1865:%.*]], label [[IF_END1866:%.*]]
// SIMD-ONLY0:       if.then1865:
// SIMD-ONLY0-NEXT:    [[TMP1156:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1156]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1866]]
// SIMD-ONLY0:       if.end1866:
// SIMD-ONLY0-NEXT:    [[TMP1157:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1157]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1158:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1867:%.*]] = sext i16 [[TMP1158]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1159:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1868:%.*]] = sext i16 [[TMP1159]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1869:%.*]] = icmp eq i32 [[CONV1867]], [[CONV1868]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1869]], label [[IF_THEN1871:%.*]], label [[IF_ELSE1872:%.*]]
// SIMD-ONLY0:       if.then1871:
// SIMD-ONLY0-NEXT:    [[TMP1160:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1160]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1873:%.*]]
// SIMD-ONLY0:       if.else1872:
// SIMD-ONLY0-NEXT:    [[TMP1161:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1161]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1873]]
// SIMD-ONLY0:       if.end1873:
// SIMD-ONLY0-NEXT:    [[TMP1162:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1874:%.*]] = sext i16 [[TMP1162]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1163:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1875:%.*]] = sext i16 [[TMP1163]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1876:%.*]] = icmp eq i32 [[CONV1874]], [[CONV1875]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1876]], label [[IF_THEN1878:%.*]], label [[IF_ELSE1879:%.*]]
// SIMD-ONLY0:       if.then1878:
// SIMD-ONLY0-NEXT:    [[TMP1164:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1164]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1880:%.*]]
// SIMD-ONLY0:       if.else1879:
// SIMD-ONLY0-NEXT:    [[TMP1165:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1165]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1880]]
// SIMD-ONLY0:       if.end1880:
// SIMD-ONLY0-NEXT:    [[TMP1166:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1881:%.*]] = sext i16 [[TMP1166]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1167:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1882:%.*]] = sext i16 [[TMP1167]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1883:%.*]] = icmp eq i32 [[CONV1881]], [[CONV1882]]
// SIMD-ONLY0-NEXT:    [[CONV1884:%.*]] = zext i1 [[CMP1883]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1885:%.*]] = trunc i32 [[CONV1884]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1885]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1168:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1886:%.*]] = icmp ne i16 [[TMP1168]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1886]], label [[IF_THEN1887:%.*]], label [[IF_END1888:%.*]]
// SIMD-ONLY0:       if.then1887:
// SIMD-ONLY0-NEXT:    [[TMP1169:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1169]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1888]]
// SIMD-ONLY0:       if.end1888:
// SIMD-ONLY0-NEXT:    [[TMP1170:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1889:%.*]] = sext i16 [[TMP1170]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1171:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1890:%.*]] = sext i16 [[TMP1171]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1891:%.*]] = icmp eq i32 [[CONV1889]], [[CONV1890]]
// SIMD-ONLY0-NEXT:    [[CONV1892:%.*]] = zext i1 [[CMP1891]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1893:%.*]] = trunc i32 [[CONV1892]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1893]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1172:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1894:%.*]] = icmp ne i16 [[TMP1172]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1894]], label [[IF_THEN1895:%.*]], label [[IF_END1896:%.*]]
// SIMD-ONLY0:       if.then1895:
// SIMD-ONLY0-NEXT:    [[TMP1173:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1173]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1896]]
// SIMD-ONLY0:       if.end1896:
// SIMD-ONLY0-NEXT:    [[TMP1174:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1897:%.*]] = sext i16 [[TMP1174]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1175:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1898:%.*]] = sext i16 [[TMP1175]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1899:%.*]] = icmp eq i32 [[CONV1897]], [[CONV1898]]
// SIMD-ONLY0-NEXT:    [[CONV1900:%.*]] = zext i1 [[CMP1899]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1901:%.*]] = trunc i32 [[CONV1900]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1901]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1176:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1902:%.*]] = icmp ne i16 [[TMP1176]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1902]], label [[IF_THEN1903:%.*]], label [[IF_ELSE1904:%.*]]
// SIMD-ONLY0:       if.then1903:
// SIMD-ONLY0-NEXT:    [[TMP1177:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1177]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1905:%.*]]
// SIMD-ONLY0:       if.else1904:
// SIMD-ONLY0-NEXT:    [[TMP1178:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1178]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1905]]
// SIMD-ONLY0:       if.end1905:
// SIMD-ONLY0-NEXT:    [[TMP1179:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1906:%.*]] = sext i16 [[TMP1179]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1180:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1907:%.*]] = sext i16 [[TMP1180]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1908:%.*]] = icmp eq i32 [[CONV1906]], [[CONV1907]]
// SIMD-ONLY0-NEXT:    [[CONV1909:%.*]] = zext i1 [[CMP1908]] to i32
// SIMD-ONLY0-NEXT:    [[CONV1910:%.*]] = trunc i32 [[CONV1909]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV1910]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1181:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL1911:%.*]] = icmp ne i16 [[TMP1181]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL1911]], label [[IF_THEN1912:%.*]], label [[IF_ELSE1913:%.*]]
// SIMD-ONLY0:       if.then1912:
// SIMD-ONLY0-NEXT:    [[TMP1182:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1182]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1914:%.*]]
// SIMD-ONLY0:       if.else1913:
// SIMD-ONLY0-NEXT:    [[TMP1183:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1183]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1914]]
// SIMD-ONLY0:       if.end1914:
// SIMD-ONLY0-NEXT:    [[TMP1184:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1184]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1185:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1915:%.*]] = sext i16 [[TMP1185]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1186:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1916:%.*]] = sext i16 [[TMP1186]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1917:%.*]] = icmp sgt i32 [[CONV1915]], [[CONV1916]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1917]], label [[IF_THEN1919:%.*]], label [[IF_END1920:%.*]]
// SIMD-ONLY0:       if.then1919:
// SIMD-ONLY0-NEXT:    [[TMP1187:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1187]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1920]]
// SIMD-ONLY0:       if.end1920:
// SIMD-ONLY0-NEXT:    [[TMP1188:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1188]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1189:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1921:%.*]] = sext i16 [[TMP1189]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1190:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1922:%.*]] = sext i16 [[TMP1190]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1923:%.*]] = icmp sgt i32 [[CONV1921]], [[CONV1922]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1923]], label [[IF_THEN1925:%.*]], label [[IF_END1926:%.*]]
// SIMD-ONLY0:       if.then1925:
// SIMD-ONLY0-NEXT:    [[TMP1191:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1191]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1926]]
// SIMD-ONLY0:       if.end1926:
// SIMD-ONLY0-NEXT:    [[TMP1192:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1192]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1193:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1927:%.*]] = sext i16 [[TMP1193]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1194:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1928:%.*]] = sext i16 [[TMP1194]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1929:%.*]] = icmp slt i32 [[CONV1927]], [[CONV1928]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1929]], label [[IF_THEN1931:%.*]], label [[IF_END1932:%.*]]
// SIMD-ONLY0:       if.then1931:
// SIMD-ONLY0-NEXT:    [[TMP1195:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1195]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1932]]
// SIMD-ONLY0:       if.end1932:
// SIMD-ONLY0-NEXT:    [[TMP1196:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1196]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1197:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1933:%.*]] = sext i16 [[TMP1197]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1198:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1934:%.*]] = sext i16 [[TMP1198]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1935:%.*]] = icmp slt i32 [[CONV1933]], [[CONV1934]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1935]], label [[IF_THEN1937:%.*]], label [[IF_END1938:%.*]]
// SIMD-ONLY0:       if.then1937:
// SIMD-ONLY0-NEXT:    [[TMP1199:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1199]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1938]]
// SIMD-ONLY0:       if.end1938:
// SIMD-ONLY0-NEXT:    [[TMP1200:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1200]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1201:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1939:%.*]] = sext i16 [[TMP1201]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1202:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1940:%.*]] = sext i16 [[TMP1202]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1941:%.*]] = icmp eq i32 [[CONV1939]], [[CONV1940]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1941]], label [[IF_THEN1943:%.*]], label [[IF_END1944:%.*]]
// SIMD-ONLY0:       if.then1943:
// SIMD-ONLY0-NEXT:    [[TMP1203:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1203]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1944]]
// SIMD-ONLY0:       if.end1944:
// SIMD-ONLY0-NEXT:    [[TMP1204:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1204]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1205:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1945:%.*]] = sext i16 [[TMP1205]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1206:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1946:%.*]] = sext i16 [[TMP1206]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1947:%.*]] = icmp eq i32 [[CONV1945]], [[CONV1946]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1947]], label [[IF_THEN1949:%.*]], label [[IF_END1950:%.*]]
// SIMD-ONLY0:       if.then1949:
// SIMD-ONLY0-NEXT:    [[TMP1207:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1207]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1950]]
// SIMD-ONLY0:       if.end1950:
// SIMD-ONLY0-NEXT:    [[TMP1208:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1951:%.*]] = sext i16 [[TMP1208]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1209:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1952:%.*]] = sext i16 [[TMP1209]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1953:%.*]] = icmp sgt i32 [[CONV1951]], [[CONV1952]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1953]], label [[IF_THEN1955:%.*]], label [[IF_END1956:%.*]]
// SIMD-ONLY0:       if.then1955:
// SIMD-ONLY0-NEXT:    [[TMP1210:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1210]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1956]]
// SIMD-ONLY0:       if.end1956:
// SIMD-ONLY0-NEXT:    [[TMP1211:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1211]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1212:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1957:%.*]] = sext i16 [[TMP1212]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1213:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1958:%.*]] = sext i16 [[TMP1213]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1959:%.*]] = icmp sgt i32 [[CONV1957]], [[CONV1958]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1959]], label [[IF_THEN1961:%.*]], label [[IF_END1962:%.*]]
// SIMD-ONLY0:       if.then1961:
// SIMD-ONLY0-NEXT:    [[TMP1214:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1214]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1962]]
// SIMD-ONLY0:       if.end1962:
// SIMD-ONLY0-NEXT:    [[TMP1215:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1215]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1216:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1963:%.*]] = sext i16 [[TMP1216]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1217:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1964:%.*]] = sext i16 [[TMP1217]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1965:%.*]] = icmp slt i32 [[CONV1963]], [[CONV1964]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1965]], label [[IF_THEN1967:%.*]], label [[IF_END1968:%.*]]
// SIMD-ONLY0:       if.then1967:
// SIMD-ONLY0-NEXT:    [[TMP1218:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1218]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1968]]
// SIMD-ONLY0:       if.end1968:
// SIMD-ONLY0-NEXT:    [[TMP1219:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1219]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1220:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1969:%.*]] = sext i16 [[TMP1220]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1221:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1970:%.*]] = sext i16 [[TMP1221]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1971:%.*]] = icmp slt i32 [[CONV1969]], [[CONV1970]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1971]], label [[IF_THEN1973:%.*]], label [[IF_END1974:%.*]]
// SIMD-ONLY0:       if.then1973:
// SIMD-ONLY0-NEXT:    [[TMP1222:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1222]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1974]]
// SIMD-ONLY0:       if.end1974:
// SIMD-ONLY0-NEXT:    [[TMP1223:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1223]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1224:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1975:%.*]] = sext i16 [[TMP1224]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1225:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1976:%.*]] = sext i16 [[TMP1225]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1977:%.*]] = icmp eq i32 [[CONV1975]], [[CONV1976]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1977]], label [[IF_THEN1979:%.*]], label [[IF_END1980:%.*]]
// SIMD-ONLY0:       if.then1979:
// SIMD-ONLY0-NEXT:    [[TMP1226:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1226]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1980]]
// SIMD-ONLY0:       if.end1980:
// SIMD-ONLY0-NEXT:    [[TMP1227:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1227]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1228:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1981:%.*]] = sext i16 [[TMP1228]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1229:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1982:%.*]] = sext i16 [[TMP1229]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1983:%.*]] = icmp eq i32 [[CONV1981]], [[CONV1982]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1983]], label [[IF_THEN1985:%.*]], label [[IF_END1986:%.*]]
// SIMD-ONLY0:       if.then1985:
// SIMD-ONLY0-NEXT:    [[TMP1230:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1230]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1986]]
// SIMD-ONLY0:       if.end1986:
// SIMD-ONLY0-NEXT:    [[TMP1231:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1231]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1232:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1987:%.*]] = sext i16 [[TMP1232]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1233:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1988:%.*]] = sext i16 [[TMP1233]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1989:%.*]] = icmp eq i32 [[CONV1987]], [[CONV1988]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1989]], label [[IF_THEN1991:%.*]], label [[IF_ELSE1992:%.*]]
// SIMD-ONLY0:       if.then1991:
// SIMD-ONLY0-NEXT:    [[TMP1234:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1234]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1993:%.*]]
// SIMD-ONLY0:       if.else1992:
// SIMD-ONLY0-NEXT:    [[TMP1235:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1235]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END1993]]
// SIMD-ONLY0:       if.end1993:
// SIMD-ONLY0-NEXT:    [[TMP1236:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1994:%.*]] = sext i16 [[TMP1236]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1237:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1995:%.*]] = sext i16 [[TMP1237]] to i32
// SIMD-ONLY0-NEXT:    [[CMP1996:%.*]] = icmp eq i32 [[CONV1994]], [[CONV1995]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1996]], label [[IF_THEN1998:%.*]], label [[IF_ELSE1999:%.*]]
// SIMD-ONLY0:       if.then1998:
// SIMD-ONLY0-NEXT:    [[TMP1238:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1238]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2000:%.*]]
// SIMD-ONLY0:       if.else1999:
// SIMD-ONLY0-NEXT:    [[TMP1239:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1239]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2000]]
// SIMD-ONLY0:       if.end2000:
// SIMD-ONLY0-NEXT:    [[TMP1240:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2001:%.*]] = sext i16 [[TMP1240]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1241:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2002:%.*]] = sext i16 [[TMP1241]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2003:%.*]] = icmp eq i32 [[CONV2001]], [[CONV2002]]
// SIMD-ONLY0-NEXT:    [[CONV2004:%.*]] = zext i1 [[CMP2003]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2005:%.*]] = trunc i32 [[CONV2004]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2005]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1242:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2006:%.*]] = icmp ne i16 [[TMP1242]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2006]], label [[IF_THEN2007:%.*]], label [[IF_END2008:%.*]]
// SIMD-ONLY0:       if.then2007:
// SIMD-ONLY0-NEXT:    [[TMP1243:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1243]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2008]]
// SIMD-ONLY0:       if.end2008:
// SIMD-ONLY0-NEXT:    [[TMP1244:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2009:%.*]] = sext i16 [[TMP1244]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1245:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2010:%.*]] = sext i16 [[TMP1245]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2011:%.*]] = icmp eq i32 [[CONV2009]], [[CONV2010]]
// SIMD-ONLY0-NEXT:    [[CONV2012:%.*]] = zext i1 [[CMP2011]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2013:%.*]] = trunc i32 [[CONV2012]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2013]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1246:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2014:%.*]] = icmp ne i16 [[TMP1246]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2014]], label [[IF_THEN2015:%.*]], label [[IF_END2016:%.*]]
// SIMD-ONLY0:       if.then2015:
// SIMD-ONLY0-NEXT:    [[TMP1247:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1247]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2016]]
// SIMD-ONLY0:       if.end2016:
// SIMD-ONLY0-NEXT:    [[TMP1248:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2017:%.*]] = sext i16 [[TMP1248]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1249:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2018:%.*]] = sext i16 [[TMP1249]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2019:%.*]] = icmp eq i32 [[CONV2017]], [[CONV2018]]
// SIMD-ONLY0-NEXT:    [[CONV2020:%.*]] = zext i1 [[CMP2019]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2021:%.*]] = trunc i32 [[CONV2020]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2021]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1250:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2022:%.*]] = icmp ne i16 [[TMP1250]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2022]], label [[IF_THEN2023:%.*]], label [[IF_ELSE2024:%.*]]
// SIMD-ONLY0:       if.then2023:
// SIMD-ONLY0-NEXT:    [[TMP1251:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1251]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2025:%.*]]
// SIMD-ONLY0:       if.else2024:
// SIMD-ONLY0-NEXT:    [[TMP1252:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1252]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2025]]
// SIMD-ONLY0:       if.end2025:
// SIMD-ONLY0-NEXT:    [[TMP1253:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2026:%.*]] = sext i16 [[TMP1253]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1254:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2027:%.*]] = sext i16 [[TMP1254]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2028:%.*]] = icmp eq i32 [[CONV2026]], [[CONV2027]]
// SIMD-ONLY0-NEXT:    [[CONV2029:%.*]] = zext i1 [[CMP2028]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2030:%.*]] = trunc i32 [[CONV2029]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2030]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1255:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2031:%.*]] = icmp ne i16 [[TMP1255]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2031]], label [[IF_THEN2032:%.*]], label [[IF_ELSE2033:%.*]]
// SIMD-ONLY0:       if.then2032:
// SIMD-ONLY0-NEXT:    [[TMP1256:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1256]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2034:%.*]]
// SIMD-ONLY0:       if.else2033:
// SIMD-ONLY0-NEXT:    [[TMP1257:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1257]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2034]]
// SIMD-ONLY0:       if.end2034:
// SIMD-ONLY0-NEXT:    [[TMP1258:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1258]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1259:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2035:%.*]] = sext i16 [[TMP1259]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1260:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2036:%.*]] = sext i16 [[TMP1260]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2037:%.*]] = icmp sgt i32 [[CONV2035]], [[CONV2036]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2037]], label [[IF_THEN2039:%.*]], label [[IF_END2040:%.*]]
// SIMD-ONLY0:       if.then2039:
// SIMD-ONLY0-NEXT:    [[TMP1261:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1261]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2040]]
// SIMD-ONLY0:       if.end2040:
// SIMD-ONLY0-NEXT:    [[TMP1262:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1262]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1263:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2041:%.*]] = sext i16 [[TMP1263]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1264:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2042:%.*]] = sext i16 [[TMP1264]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2043:%.*]] = icmp sgt i32 [[CONV2041]], [[CONV2042]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2043]], label [[IF_THEN2045:%.*]], label [[IF_END2046:%.*]]
// SIMD-ONLY0:       if.then2045:
// SIMD-ONLY0-NEXT:    [[TMP1265:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1265]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2046]]
// SIMD-ONLY0:       if.end2046:
// SIMD-ONLY0-NEXT:    [[TMP1266:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1266]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1267:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2047:%.*]] = sext i16 [[TMP1267]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1268:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2048:%.*]] = sext i16 [[TMP1268]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2049:%.*]] = icmp slt i32 [[CONV2047]], [[CONV2048]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2049]], label [[IF_THEN2051:%.*]], label [[IF_END2052:%.*]]
// SIMD-ONLY0:       if.then2051:
// SIMD-ONLY0-NEXT:    [[TMP1269:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1269]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2052]]
// SIMD-ONLY0:       if.end2052:
// SIMD-ONLY0-NEXT:    [[TMP1270:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1270]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1271:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2053:%.*]] = sext i16 [[TMP1271]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1272:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2054:%.*]] = sext i16 [[TMP1272]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2055:%.*]] = icmp slt i32 [[CONV2053]], [[CONV2054]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2055]], label [[IF_THEN2057:%.*]], label [[IF_END2058:%.*]]
// SIMD-ONLY0:       if.then2057:
// SIMD-ONLY0-NEXT:    [[TMP1273:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1273]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2058]]
// SIMD-ONLY0:       if.end2058:
// SIMD-ONLY0-NEXT:    [[TMP1274:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1274]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1275:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2059:%.*]] = sext i16 [[TMP1275]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1276:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2060:%.*]] = sext i16 [[TMP1276]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2061:%.*]] = icmp eq i32 [[CONV2059]], [[CONV2060]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2061]], label [[IF_THEN2063:%.*]], label [[IF_END2064:%.*]]
// SIMD-ONLY0:       if.then2063:
// SIMD-ONLY0-NEXT:    [[TMP1277:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1277]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2064]]
// SIMD-ONLY0:       if.end2064:
// SIMD-ONLY0-NEXT:    [[TMP1278:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1278]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1279:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2065:%.*]] = sext i16 [[TMP1279]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1280:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2066:%.*]] = sext i16 [[TMP1280]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2067:%.*]] = icmp eq i32 [[CONV2065]], [[CONV2066]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2067]], label [[IF_THEN2069:%.*]], label [[IF_END2070:%.*]]
// SIMD-ONLY0:       if.then2069:
// SIMD-ONLY0-NEXT:    [[TMP1281:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1281]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2070]]
// SIMD-ONLY0:       if.end2070:
// SIMD-ONLY0-NEXT:    [[TMP1282:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2071:%.*]] = sext i16 [[TMP1282]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1283:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2072:%.*]] = sext i16 [[TMP1283]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2073:%.*]] = icmp sgt i32 [[CONV2071]], [[CONV2072]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2073]], label [[IF_THEN2075:%.*]], label [[IF_END2076:%.*]]
// SIMD-ONLY0:       if.then2075:
// SIMD-ONLY0-NEXT:    [[TMP1284:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1284]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2076]]
// SIMD-ONLY0:       if.end2076:
// SIMD-ONLY0-NEXT:    [[TMP1285:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1285]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1286:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2077:%.*]] = sext i16 [[TMP1286]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1287:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2078:%.*]] = sext i16 [[TMP1287]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2079:%.*]] = icmp sgt i32 [[CONV2077]], [[CONV2078]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2079]], label [[IF_THEN2081:%.*]], label [[IF_END2082:%.*]]
// SIMD-ONLY0:       if.then2081:
// SIMD-ONLY0-NEXT:    [[TMP1288:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1288]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2082]]
// SIMD-ONLY0:       if.end2082:
// SIMD-ONLY0-NEXT:    [[TMP1289:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1289]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1290:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2083:%.*]] = sext i16 [[TMP1290]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1291:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2084:%.*]] = sext i16 [[TMP1291]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2085:%.*]] = icmp slt i32 [[CONV2083]], [[CONV2084]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2085]], label [[IF_THEN2087:%.*]], label [[IF_END2088:%.*]]
// SIMD-ONLY0:       if.then2087:
// SIMD-ONLY0-NEXT:    [[TMP1292:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1292]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2088]]
// SIMD-ONLY0:       if.end2088:
// SIMD-ONLY0-NEXT:    [[TMP1293:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1293]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1294:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2089:%.*]] = sext i16 [[TMP1294]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1295:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2090:%.*]] = sext i16 [[TMP1295]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2091:%.*]] = icmp slt i32 [[CONV2089]], [[CONV2090]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2091]], label [[IF_THEN2093:%.*]], label [[IF_END2094:%.*]]
// SIMD-ONLY0:       if.then2093:
// SIMD-ONLY0-NEXT:    [[TMP1296:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1296]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2094]]
// SIMD-ONLY0:       if.end2094:
// SIMD-ONLY0-NEXT:    [[TMP1297:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1297]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1298:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2095:%.*]] = sext i16 [[TMP1298]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1299:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2096:%.*]] = sext i16 [[TMP1299]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2097:%.*]] = icmp eq i32 [[CONV2095]], [[CONV2096]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2097]], label [[IF_THEN2099:%.*]], label [[IF_END2100:%.*]]
// SIMD-ONLY0:       if.then2099:
// SIMD-ONLY0-NEXT:    [[TMP1300:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1300]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2100]]
// SIMD-ONLY0:       if.end2100:
// SIMD-ONLY0-NEXT:    [[TMP1301:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1301]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1302:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2101:%.*]] = sext i16 [[TMP1302]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1303:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2102:%.*]] = sext i16 [[TMP1303]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2103:%.*]] = icmp eq i32 [[CONV2101]], [[CONV2102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2103]], label [[IF_THEN2105:%.*]], label [[IF_END2106:%.*]]
// SIMD-ONLY0:       if.then2105:
// SIMD-ONLY0-NEXT:    [[TMP1304:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1304]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2106]]
// SIMD-ONLY0:       if.end2106:
// SIMD-ONLY0-NEXT:    [[TMP1305:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1305]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1306:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2107:%.*]] = sext i16 [[TMP1306]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1307:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2108:%.*]] = sext i16 [[TMP1307]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2109:%.*]] = icmp eq i32 [[CONV2107]], [[CONV2108]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2109]], label [[IF_THEN2111:%.*]], label [[IF_ELSE2112:%.*]]
// SIMD-ONLY0:       if.then2111:
// SIMD-ONLY0-NEXT:    [[TMP1308:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1308]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2113:%.*]]
// SIMD-ONLY0:       if.else2112:
// SIMD-ONLY0-NEXT:    [[TMP1309:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1309]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2113]]
// SIMD-ONLY0:       if.end2113:
// SIMD-ONLY0-NEXT:    [[TMP1310:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2114:%.*]] = sext i16 [[TMP1310]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1311:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2115:%.*]] = sext i16 [[TMP1311]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2116:%.*]] = icmp eq i32 [[CONV2114]], [[CONV2115]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2116]], label [[IF_THEN2118:%.*]], label [[IF_ELSE2119:%.*]]
// SIMD-ONLY0:       if.then2118:
// SIMD-ONLY0-NEXT:    [[TMP1312:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1312]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2120:%.*]]
// SIMD-ONLY0:       if.else2119:
// SIMD-ONLY0-NEXT:    [[TMP1313:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1313]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2120]]
// SIMD-ONLY0:       if.end2120:
// SIMD-ONLY0-NEXT:    [[TMP1314:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2121:%.*]] = sext i16 [[TMP1314]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1315:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2122:%.*]] = sext i16 [[TMP1315]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2123:%.*]] = icmp eq i32 [[CONV2121]], [[CONV2122]]
// SIMD-ONLY0-NEXT:    [[CONV2124:%.*]] = zext i1 [[CMP2123]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2125:%.*]] = trunc i32 [[CONV2124]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2125]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1316:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2126:%.*]] = icmp ne i16 [[TMP1316]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2126]], label [[IF_THEN2127:%.*]], label [[IF_END2128:%.*]]
// SIMD-ONLY0:       if.then2127:
// SIMD-ONLY0-NEXT:    [[TMP1317:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1317]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2128]]
// SIMD-ONLY0:       if.end2128:
// SIMD-ONLY0-NEXT:    [[TMP1318:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2129:%.*]] = sext i16 [[TMP1318]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1319:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2130:%.*]] = sext i16 [[TMP1319]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2131:%.*]] = icmp eq i32 [[CONV2129]], [[CONV2130]]
// SIMD-ONLY0-NEXT:    [[CONV2132:%.*]] = zext i1 [[CMP2131]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2133:%.*]] = trunc i32 [[CONV2132]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2133]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1320:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2134:%.*]] = icmp ne i16 [[TMP1320]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2134]], label [[IF_THEN2135:%.*]], label [[IF_END2136:%.*]]
// SIMD-ONLY0:       if.then2135:
// SIMD-ONLY0-NEXT:    [[TMP1321:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1321]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2136]]
// SIMD-ONLY0:       if.end2136:
// SIMD-ONLY0-NEXT:    [[TMP1322:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2137:%.*]] = sext i16 [[TMP1322]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1323:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2138:%.*]] = sext i16 [[TMP1323]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2139:%.*]] = icmp eq i32 [[CONV2137]], [[CONV2138]]
// SIMD-ONLY0-NEXT:    [[CONV2140:%.*]] = zext i1 [[CMP2139]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2141:%.*]] = trunc i32 [[CONV2140]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2141]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1324:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2142:%.*]] = icmp ne i16 [[TMP1324]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2142]], label [[IF_THEN2143:%.*]], label [[IF_ELSE2144:%.*]]
// SIMD-ONLY0:       if.then2143:
// SIMD-ONLY0-NEXT:    [[TMP1325:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1325]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2145:%.*]]
// SIMD-ONLY0:       if.else2144:
// SIMD-ONLY0-NEXT:    [[TMP1326:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1326]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2145]]
// SIMD-ONLY0:       if.end2145:
// SIMD-ONLY0-NEXT:    [[TMP1327:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2146:%.*]] = sext i16 [[TMP1327]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1328:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2147:%.*]] = sext i16 [[TMP1328]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2148:%.*]] = icmp eq i32 [[CONV2146]], [[CONV2147]]
// SIMD-ONLY0-NEXT:    [[CONV2149:%.*]] = zext i1 [[CMP2148]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2150:%.*]] = trunc i32 [[CONV2149]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2150]], ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1329:%.*]] = load i16, ptr [[SR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2151:%.*]] = icmp ne i16 [[TMP1329]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2151]], label [[IF_THEN2152:%.*]], label [[IF_ELSE2153:%.*]]
// SIMD-ONLY0:       if.then2152:
// SIMD-ONLY0-NEXT:    [[TMP1330:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1330]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2154:%.*]]
// SIMD-ONLY0:       if.else2153:
// SIMD-ONLY0-NEXT:    [[TMP1331:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1331]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2154]]
// SIMD-ONLY0:       if.end2154:
// SIMD-ONLY0-NEXT:    [[TMP1332:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1332]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1333:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2155:%.*]] = zext i16 [[TMP1333]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1334:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2156:%.*]] = zext i16 [[TMP1334]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2157:%.*]] = icmp sgt i32 [[CONV2155]], [[CONV2156]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2157]], label [[IF_THEN2159:%.*]], label [[IF_END2160:%.*]]
// SIMD-ONLY0:       if.then2159:
// SIMD-ONLY0-NEXT:    [[TMP1335:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1335]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2160]]
// SIMD-ONLY0:       if.end2160:
// SIMD-ONLY0-NEXT:    [[TMP1336:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1336]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1337:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2161:%.*]] = zext i16 [[TMP1337]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1338:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2162:%.*]] = zext i16 [[TMP1338]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2163:%.*]] = icmp sgt i32 [[CONV2161]], [[CONV2162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2163]], label [[IF_THEN2165:%.*]], label [[IF_END2166:%.*]]
// SIMD-ONLY0:       if.then2165:
// SIMD-ONLY0-NEXT:    [[TMP1339:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1339]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2166]]
// SIMD-ONLY0:       if.end2166:
// SIMD-ONLY0-NEXT:    [[TMP1340:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1340]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1341:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2167:%.*]] = zext i16 [[TMP1341]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1342:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2168:%.*]] = zext i16 [[TMP1342]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2169:%.*]] = icmp slt i32 [[CONV2167]], [[CONV2168]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2169]], label [[IF_THEN2171:%.*]], label [[IF_END2172:%.*]]
// SIMD-ONLY0:       if.then2171:
// SIMD-ONLY0-NEXT:    [[TMP1343:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1343]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2172]]
// SIMD-ONLY0:       if.end2172:
// SIMD-ONLY0-NEXT:    [[TMP1344:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1344]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1345:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2173:%.*]] = zext i16 [[TMP1345]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1346:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2174:%.*]] = zext i16 [[TMP1346]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2175:%.*]] = icmp slt i32 [[CONV2173]], [[CONV2174]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2175]], label [[IF_THEN2177:%.*]], label [[IF_END2178:%.*]]
// SIMD-ONLY0:       if.then2177:
// SIMD-ONLY0-NEXT:    [[TMP1347:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1347]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2178]]
// SIMD-ONLY0:       if.end2178:
// SIMD-ONLY0-NEXT:    [[TMP1348:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1348]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1349:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2179:%.*]] = zext i16 [[TMP1349]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1350:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2180:%.*]] = zext i16 [[TMP1350]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2181:%.*]] = icmp eq i32 [[CONV2179]], [[CONV2180]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2181]], label [[IF_THEN2183:%.*]], label [[IF_END2184:%.*]]
// SIMD-ONLY0:       if.then2183:
// SIMD-ONLY0-NEXT:    [[TMP1351:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1351]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2184]]
// SIMD-ONLY0:       if.end2184:
// SIMD-ONLY0-NEXT:    [[TMP1352:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1352]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1353:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2185:%.*]] = zext i16 [[TMP1353]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1354:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2186:%.*]] = zext i16 [[TMP1354]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2187:%.*]] = icmp eq i32 [[CONV2185]], [[CONV2186]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2187]], label [[IF_THEN2189:%.*]], label [[IF_END2190:%.*]]
// SIMD-ONLY0:       if.then2189:
// SIMD-ONLY0-NEXT:    [[TMP1355:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1355]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2190]]
// SIMD-ONLY0:       if.end2190:
// SIMD-ONLY0-NEXT:    [[TMP1356:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2191:%.*]] = zext i16 [[TMP1356]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1357:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2192:%.*]] = zext i16 [[TMP1357]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2193:%.*]] = icmp sgt i32 [[CONV2191]], [[CONV2192]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2193]], label [[IF_THEN2195:%.*]], label [[IF_END2196:%.*]]
// SIMD-ONLY0:       if.then2195:
// SIMD-ONLY0-NEXT:    [[TMP1358:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1358]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2196]]
// SIMD-ONLY0:       if.end2196:
// SIMD-ONLY0-NEXT:    [[TMP1359:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1359]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1360:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2197:%.*]] = zext i16 [[TMP1360]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1361:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2198:%.*]] = zext i16 [[TMP1361]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2199:%.*]] = icmp sgt i32 [[CONV2197]], [[CONV2198]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2199]], label [[IF_THEN2201:%.*]], label [[IF_END2202:%.*]]
// SIMD-ONLY0:       if.then2201:
// SIMD-ONLY0-NEXT:    [[TMP1362:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1362]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2202]]
// SIMD-ONLY0:       if.end2202:
// SIMD-ONLY0-NEXT:    [[TMP1363:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1363]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1364:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2203:%.*]] = zext i16 [[TMP1364]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1365:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2204:%.*]] = zext i16 [[TMP1365]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2205:%.*]] = icmp slt i32 [[CONV2203]], [[CONV2204]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2205]], label [[IF_THEN2207:%.*]], label [[IF_END2208:%.*]]
// SIMD-ONLY0:       if.then2207:
// SIMD-ONLY0-NEXT:    [[TMP1366:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1366]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2208]]
// SIMD-ONLY0:       if.end2208:
// SIMD-ONLY0-NEXT:    [[TMP1367:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1367]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1368:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2209:%.*]] = zext i16 [[TMP1368]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1369:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2210:%.*]] = zext i16 [[TMP1369]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2211:%.*]] = icmp slt i32 [[CONV2209]], [[CONV2210]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2211]], label [[IF_THEN2213:%.*]], label [[IF_END2214:%.*]]
// SIMD-ONLY0:       if.then2213:
// SIMD-ONLY0-NEXT:    [[TMP1370:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1370]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2214]]
// SIMD-ONLY0:       if.end2214:
// SIMD-ONLY0-NEXT:    [[TMP1371:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1371]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1372:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2215:%.*]] = zext i16 [[TMP1372]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1373:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2216:%.*]] = zext i16 [[TMP1373]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2217:%.*]] = icmp eq i32 [[CONV2215]], [[CONV2216]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2217]], label [[IF_THEN2219:%.*]], label [[IF_END2220:%.*]]
// SIMD-ONLY0:       if.then2219:
// SIMD-ONLY0-NEXT:    [[TMP1374:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1374]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2220]]
// SIMD-ONLY0:       if.end2220:
// SIMD-ONLY0-NEXT:    [[TMP1375:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1375]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1376:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2221:%.*]] = zext i16 [[TMP1376]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1377:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2222:%.*]] = zext i16 [[TMP1377]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2223:%.*]] = icmp eq i32 [[CONV2221]], [[CONV2222]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2223]], label [[IF_THEN2225:%.*]], label [[IF_END2226:%.*]]
// SIMD-ONLY0:       if.then2225:
// SIMD-ONLY0-NEXT:    [[TMP1378:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1378]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2226]]
// SIMD-ONLY0:       if.end2226:
// SIMD-ONLY0-NEXT:    [[TMP1379:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1379]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1380:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2227:%.*]] = zext i16 [[TMP1380]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1381:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2228:%.*]] = zext i16 [[TMP1381]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2229:%.*]] = icmp eq i32 [[CONV2227]], [[CONV2228]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2229]], label [[IF_THEN2231:%.*]], label [[IF_ELSE2232:%.*]]
// SIMD-ONLY0:       if.then2231:
// SIMD-ONLY0-NEXT:    [[TMP1382:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1382]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2233:%.*]]
// SIMD-ONLY0:       if.else2232:
// SIMD-ONLY0-NEXT:    [[TMP1383:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1383]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2233]]
// SIMD-ONLY0:       if.end2233:
// SIMD-ONLY0-NEXT:    [[TMP1384:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2234:%.*]] = zext i16 [[TMP1384]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1385:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2235:%.*]] = zext i16 [[TMP1385]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2236:%.*]] = icmp eq i32 [[CONV2234]], [[CONV2235]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2236]], label [[IF_THEN2238:%.*]], label [[IF_ELSE2239:%.*]]
// SIMD-ONLY0:       if.then2238:
// SIMD-ONLY0-NEXT:    [[TMP1386:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1386]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2240:%.*]]
// SIMD-ONLY0:       if.else2239:
// SIMD-ONLY0-NEXT:    [[TMP1387:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1387]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2240]]
// SIMD-ONLY0:       if.end2240:
// SIMD-ONLY0-NEXT:    [[TMP1388:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2241:%.*]] = zext i16 [[TMP1388]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1389:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2242:%.*]] = zext i16 [[TMP1389]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2243:%.*]] = icmp eq i32 [[CONV2241]], [[CONV2242]]
// SIMD-ONLY0-NEXT:    [[CONV2244:%.*]] = zext i1 [[CMP2243]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2245:%.*]] = trunc i32 [[CONV2244]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2245]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1390:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2246:%.*]] = icmp ne i16 [[TMP1390]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2246]], label [[IF_THEN2247:%.*]], label [[IF_END2248:%.*]]
// SIMD-ONLY0:       if.then2247:
// SIMD-ONLY0-NEXT:    [[TMP1391:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1391]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2248]]
// SIMD-ONLY0:       if.end2248:
// SIMD-ONLY0-NEXT:    [[TMP1392:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2249:%.*]] = zext i16 [[TMP1392]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1393:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2250:%.*]] = zext i16 [[TMP1393]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2251:%.*]] = icmp eq i32 [[CONV2249]], [[CONV2250]]
// SIMD-ONLY0-NEXT:    [[CONV2252:%.*]] = zext i1 [[CMP2251]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2253:%.*]] = trunc i32 [[CONV2252]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2253]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1394:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2254:%.*]] = icmp ne i16 [[TMP1394]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2254]], label [[IF_THEN2255:%.*]], label [[IF_END2256:%.*]]
// SIMD-ONLY0:       if.then2255:
// SIMD-ONLY0-NEXT:    [[TMP1395:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1395]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2256]]
// SIMD-ONLY0:       if.end2256:
// SIMD-ONLY0-NEXT:    [[TMP1396:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2257:%.*]] = zext i16 [[TMP1396]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1397:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2258:%.*]] = zext i16 [[TMP1397]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2259:%.*]] = icmp eq i32 [[CONV2257]], [[CONV2258]]
// SIMD-ONLY0-NEXT:    [[CONV2260:%.*]] = zext i1 [[CMP2259]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2261:%.*]] = trunc i32 [[CONV2260]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2261]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1398:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2262:%.*]] = icmp ne i16 [[TMP1398]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2262]], label [[IF_THEN2263:%.*]], label [[IF_ELSE2264:%.*]]
// SIMD-ONLY0:       if.then2263:
// SIMD-ONLY0-NEXT:    [[TMP1399:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1399]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2265:%.*]]
// SIMD-ONLY0:       if.else2264:
// SIMD-ONLY0-NEXT:    [[TMP1400:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1400]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2265]]
// SIMD-ONLY0:       if.end2265:
// SIMD-ONLY0-NEXT:    [[TMP1401:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2266:%.*]] = zext i16 [[TMP1401]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1402:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2267:%.*]] = zext i16 [[TMP1402]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2268:%.*]] = icmp eq i32 [[CONV2266]], [[CONV2267]]
// SIMD-ONLY0-NEXT:    [[CONV2269:%.*]] = zext i1 [[CMP2268]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2270:%.*]] = trunc i32 [[CONV2269]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2270]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1403:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2271:%.*]] = icmp ne i16 [[TMP1403]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2271]], label [[IF_THEN2272:%.*]], label [[IF_ELSE2273:%.*]]
// SIMD-ONLY0:       if.then2272:
// SIMD-ONLY0-NEXT:    [[TMP1404:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1404]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2274:%.*]]
// SIMD-ONLY0:       if.else2273:
// SIMD-ONLY0-NEXT:    [[TMP1405:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1405]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2274]]
// SIMD-ONLY0:       if.end2274:
// SIMD-ONLY0-NEXT:    [[TMP1406:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1406]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1407:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2275:%.*]] = zext i16 [[TMP1407]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1408:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2276:%.*]] = zext i16 [[TMP1408]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2277:%.*]] = icmp sgt i32 [[CONV2275]], [[CONV2276]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2277]], label [[IF_THEN2279:%.*]], label [[IF_END2280:%.*]]
// SIMD-ONLY0:       if.then2279:
// SIMD-ONLY0-NEXT:    [[TMP1409:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1409]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2280]]
// SIMD-ONLY0:       if.end2280:
// SIMD-ONLY0-NEXT:    [[TMP1410:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1410]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1411:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2281:%.*]] = zext i16 [[TMP1411]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1412:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2282:%.*]] = zext i16 [[TMP1412]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2283:%.*]] = icmp sgt i32 [[CONV2281]], [[CONV2282]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2283]], label [[IF_THEN2285:%.*]], label [[IF_END2286:%.*]]
// SIMD-ONLY0:       if.then2285:
// SIMD-ONLY0-NEXT:    [[TMP1413:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1413]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2286]]
// SIMD-ONLY0:       if.end2286:
// SIMD-ONLY0-NEXT:    [[TMP1414:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1414]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1415:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2287:%.*]] = zext i16 [[TMP1415]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1416:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2288:%.*]] = zext i16 [[TMP1416]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2289:%.*]] = icmp slt i32 [[CONV2287]], [[CONV2288]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2289]], label [[IF_THEN2291:%.*]], label [[IF_END2292:%.*]]
// SIMD-ONLY0:       if.then2291:
// SIMD-ONLY0-NEXT:    [[TMP1417:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1417]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2292]]
// SIMD-ONLY0:       if.end2292:
// SIMD-ONLY0-NEXT:    [[TMP1418:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1418]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1419:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2293:%.*]] = zext i16 [[TMP1419]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1420:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2294:%.*]] = zext i16 [[TMP1420]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2295:%.*]] = icmp slt i32 [[CONV2293]], [[CONV2294]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2295]], label [[IF_THEN2297:%.*]], label [[IF_END2298:%.*]]
// SIMD-ONLY0:       if.then2297:
// SIMD-ONLY0-NEXT:    [[TMP1421:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1421]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2298]]
// SIMD-ONLY0:       if.end2298:
// SIMD-ONLY0-NEXT:    [[TMP1422:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1422]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1423:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2299:%.*]] = zext i16 [[TMP1423]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1424:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2300:%.*]] = zext i16 [[TMP1424]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2301:%.*]] = icmp eq i32 [[CONV2299]], [[CONV2300]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2301]], label [[IF_THEN2303:%.*]], label [[IF_END2304:%.*]]
// SIMD-ONLY0:       if.then2303:
// SIMD-ONLY0-NEXT:    [[TMP1425:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1425]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2304]]
// SIMD-ONLY0:       if.end2304:
// SIMD-ONLY0-NEXT:    [[TMP1426:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1426]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1427:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2305:%.*]] = zext i16 [[TMP1427]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1428:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2306:%.*]] = zext i16 [[TMP1428]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2307:%.*]] = icmp eq i32 [[CONV2305]], [[CONV2306]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2307]], label [[IF_THEN2309:%.*]], label [[IF_END2310:%.*]]
// SIMD-ONLY0:       if.then2309:
// SIMD-ONLY0-NEXT:    [[TMP1429:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1429]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2310]]
// SIMD-ONLY0:       if.end2310:
// SIMD-ONLY0-NEXT:    [[TMP1430:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2311:%.*]] = zext i16 [[TMP1430]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1431:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2312:%.*]] = zext i16 [[TMP1431]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2313:%.*]] = icmp sgt i32 [[CONV2311]], [[CONV2312]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2313]], label [[IF_THEN2315:%.*]], label [[IF_END2316:%.*]]
// SIMD-ONLY0:       if.then2315:
// SIMD-ONLY0-NEXT:    [[TMP1432:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1432]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2316]]
// SIMD-ONLY0:       if.end2316:
// SIMD-ONLY0-NEXT:    [[TMP1433:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1433]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1434:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2317:%.*]] = zext i16 [[TMP1434]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1435:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2318:%.*]] = zext i16 [[TMP1435]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2319:%.*]] = icmp sgt i32 [[CONV2317]], [[CONV2318]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2319]], label [[IF_THEN2321:%.*]], label [[IF_END2322:%.*]]
// SIMD-ONLY0:       if.then2321:
// SIMD-ONLY0-NEXT:    [[TMP1436:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1436]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2322]]
// SIMD-ONLY0:       if.end2322:
// SIMD-ONLY0-NEXT:    [[TMP1437:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1437]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1438:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2323:%.*]] = zext i16 [[TMP1438]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1439:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2324:%.*]] = zext i16 [[TMP1439]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2325:%.*]] = icmp slt i32 [[CONV2323]], [[CONV2324]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2325]], label [[IF_THEN2327:%.*]], label [[IF_END2328:%.*]]
// SIMD-ONLY0:       if.then2327:
// SIMD-ONLY0-NEXT:    [[TMP1440:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1440]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2328]]
// SIMD-ONLY0:       if.end2328:
// SIMD-ONLY0-NEXT:    [[TMP1441:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1441]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1442:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2329:%.*]] = zext i16 [[TMP1442]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1443:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2330:%.*]] = zext i16 [[TMP1443]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2331:%.*]] = icmp slt i32 [[CONV2329]], [[CONV2330]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2331]], label [[IF_THEN2333:%.*]], label [[IF_END2334:%.*]]
// SIMD-ONLY0:       if.then2333:
// SIMD-ONLY0-NEXT:    [[TMP1444:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1444]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2334]]
// SIMD-ONLY0:       if.end2334:
// SIMD-ONLY0-NEXT:    [[TMP1445:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1445]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1446:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2335:%.*]] = zext i16 [[TMP1446]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1447:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2336:%.*]] = zext i16 [[TMP1447]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2337:%.*]] = icmp eq i32 [[CONV2335]], [[CONV2336]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2337]], label [[IF_THEN2339:%.*]], label [[IF_END2340:%.*]]
// SIMD-ONLY0:       if.then2339:
// SIMD-ONLY0-NEXT:    [[TMP1448:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1448]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2340]]
// SIMD-ONLY0:       if.end2340:
// SIMD-ONLY0-NEXT:    [[TMP1449:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1449]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1450:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2341:%.*]] = zext i16 [[TMP1450]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1451:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2342:%.*]] = zext i16 [[TMP1451]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2343:%.*]] = icmp eq i32 [[CONV2341]], [[CONV2342]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2343]], label [[IF_THEN2345:%.*]], label [[IF_END2346:%.*]]
// SIMD-ONLY0:       if.then2345:
// SIMD-ONLY0-NEXT:    [[TMP1452:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1452]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2346]]
// SIMD-ONLY0:       if.end2346:
// SIMD-ONLY0-NEXT:    [[TMP1453:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1453]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1454:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2347:%.*]] = zext i16 [[TMP1454]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1455:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2348:%.*]] = zext i16 [[TMP1455]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2349:%.*]] = icmp eq i32 [[CONV2347]], [[CONV2348]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2349]], label [[IF_THEN2351:%.*]], label [[IF_ELSE2352:%.*]]
// SIMD-ONLY0:       if.then2351:
// SIMD-ONLY0-NEXT:    [[TMP1456:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1456]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2353:%.*]]
// SIMD-ONLY0:       if.else2352:
// SIMD-ONLY0-NEXT:    [[TMP1457:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1457]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2353]]
// SIMD-ONLY0:       if.end2353:
// SIMD-ONLY0-NEXT:    [[TMP1458:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2354:%.*]] = zext i16 [[TMP1458]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1459:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2355:%.*]] = zext i16 [[TMP1459]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2356:%.*]] = icmp eq i32 [[CONV2354]], [[CONV2355]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2356]], label [[IF_THEN2358:%.*]], label [[IF_ELSE2359:%.*]]
// SIMD-ONLY0:       if.then2358:
// SIMD-ONLY0-NEXT:    [[TMP1460:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1460]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2360:%.*]]
// SIMD-ONLY0:       if.else2359:
// SIMD-ONLY0-NEXT:    [[TMP1461:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1461]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2360]]
// SIMD-ONLY0:       if.end2360:
// SIMD-ONLY0-NEXT:    [[TMP1462:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2361:%.*]] = zext i16 [[TMP1462]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1463:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2362:%.*]] = zext i16 [[TMP1463]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2363:%.*]] = icmp eq i32 [[CONV2361]], [[CONV2362]]
// SIMD-ONLY0-NEXT:    [[CONV2364:%.*]] = zext i1 [[CMP2363]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2365:%.*]] = trunc i32 [[CONV2364]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2365]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1464:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2366:%.*]] = icmp ne i16 [[TMP1464]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2366]], label [[IF_THEN2367:%.*]], label [[IF_END2368:%.*]]
// SIMD-ONLY0:       if.then2367:
// SIMD-ONLY0-NEXT:    [[TMP1465:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1465]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2368]]
// SIMD-ONLY0:       if.end2368:
// SIMD-ONLY0-NEXT:    [[TMP1466:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2369:%.*]] = zext i16 [[TMP1466]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1467:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2370:%.*]] = zext i16 [[TMP1467]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2371:%.*]] = icmp eq i32 [[CONV2369]], [[CONV2370]]
// SIMD-ONLY0-NEXT:    [[CONV2372:%.*]] = zext i1 [[CMP2371]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2373:%.*]] = trunc i32 [[CONV2372]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2373]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1468:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2374:%.*]] = icmp ne i16 [[TMP1468]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2374]], label [[IF_THEN2375:%.*]], label [[IF_END2376:%.*]]
// SIMD-ONLY0:       if.then2375:
// SIMD-ONLY0-NEXT:    [[TMP1469:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1469]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2376]]
// SIMD-ONLY0:       if.end2376:
// SIMD-ONLY0-NEXT:    [[TMP1470:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2377:%.*]] = zext i16 [[TMP1470]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1471:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2378:%.*]] = zext i16 [[TMP1471]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2379:%.*]] = icmp eq i32 [[CONV2377]], [[CONV2378]]
// SIMD-ONLY0-NEXT:    [[CONV2380:%.*]] = zext i1 [[CMP2379]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2381:%.*]] = trunc i32 [[CONV2380]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2381]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1472:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2382:%.*]] = icmp ne i16 [[TMP1472]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2382]], label [[IF_THEN2383:%.*]], label [[IF_ELSE2384:%.*]]
// SIMD-ONLY0:       if.then2383:
// SIMD-ONLY0-NEXT:    [[TMP1473:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1473]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2385:%.*]]
// SIMD-ONLY0:       if.else2384:
// SIMD-ONLY0-NEXT:    [[TMP1474:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1474]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2385]]
// SIMD-ONLY0:       if.end2385:
// SIMD-ONLY0-NEXT:    [[TMP1475:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2386:%.*]] = zext i16 [[TMP1475]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1476:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2387:%.*]] = zext i16 [[TMP1476]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2388:%.*]] = icmp eq i32 [[CONV2386]], [[CONV2387]]
// SIMD-ONLY0-NEXT:    [[CONV2389:%.*]] = zext i1 [[CMP2388]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2390:%.*]] = trunc i32 [[CONV2389]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2390]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1477:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2391:%.*]] = icmp ne i16 [[TMP1477]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2391]], label [[IF_THEN2392:%.*]], label [[IF_ELSE2393:%.*]]
// SIMD-ONLY0:       if.then2392:
// SIMD-ONLY0-NEXT:    [[TMP1478:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1478]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2394:%.*]]
// SIMD-ONLY0:       if.else2393:
// SIMD-ONLY0-NEXT:    [[TMP1479:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1479]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2394]]
// SIMD-ONLY0:       if.end2394:
// SIMD-ONLY0-NEXT:    [[TMP1480:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1480]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1481:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2395:%.*]] = zext i16 [[TMP1481]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1482:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2396:%.*]] = zext i16 [[TMP1482]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2397:%.*]] = icmp sgt i32 [[CONV2395]], [[CONV2396]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2397]], label [[IF_THEN2399:%.*]], label [[IF_END2400:%.*]]
// SIMD-ONLY0:       if.then2399:
// SIMD-ONLY0-NEXT:    [[TMP1483:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1483]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2400]]
// SIMD-ONLY0:       if.end2400:
// SIMD-ONLY0-NEXT:    [[TMP1484:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1484]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1485:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2401:%.*]] = zext i16 [[TMP1485]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1486:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2402:%.*]] = zext i16 [[TMP1486]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2403:%.*]] = icmp sgt i32 [[CONV2401]], [[CONV2402]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2403]], label [[IF_THEN2405:%.*]], label [[IF_END2406:%.*]]
// SIMD-ONLY0:       if.then2405:
// SIMD-ONLY0-NEXT:    [[TMP1487:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1487]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2406]]
// SIMD-ONLY0:       if.end2406:
// SIMD-ONLY0-NEXT:    [[TMP1488:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1488]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1489:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2407:%.*]] = zext i16 [[TMP1489]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1490:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2408:%.*]] = zext i16 [[TMP1490]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2409:%.*]] = icmp slt i32 [[CONV2407]], [[CONV2408]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2409]], label [[IF_THEN2411:%.*]], label [[IF_END2412:%.*]]
// SIMD-ONLY0:       if.then2411:
// SIMD-ONLY0-NEXT:    [[TMP1491:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1491]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2412]]
// SIMD-ONLY0:       if.end2412:
// SIMD-ONLY0-NEXT:    [[TMP1492:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1492]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1493:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2413:%.*]] = zext i16 [[TMP1493]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1494:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2414:%.*]] = zext i16 [[TMP1494]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2415:%.*]] = icmp slt i32 [[CONV2413]], [[CONV2414]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2415]], label [[IF_THEN2417:%.*]], label [[IF_END2418:%.*]]
// SIMD-ONLY0:       if.then2417:
// SIMD-ONLY0-NEXT:    [[TMP1495:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1495]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2418]]
// SIMD-ONLY0:       if.end2418:
// SIMD-ONLY0-NEXT:    [[TMP1496:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1496]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1497:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2419:%.*]] = zext i16 [[TMP1497]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1498:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2420:%.*]] = zext i16 [[TMP1498]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2421:%.*]] = icmp eq i32 [[CONV2419]], [[CONV2420]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2421]], label [[IF_THEN2423:%.*]], label [[IF_END2424:%.*]]
// SIMD-ONLY0:       if.then2423:
// SIMD-ONLY0-NEXT:    [[TMP1499:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1499]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2424]]
// SIMD-ONLY0:       if.end2424:
// SIMD-ONLY0-NEXT:    [[TMP1500:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1500]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1501:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2425:%.*]] = zext i16 [[TMP1501]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1502:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2426:%.*]] = zext i16 [[TMP1502]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2427:%.*]] = icmp eq i32 [[CONV2425]], [[CONV2426]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2427]], label [[IF_THEN2429:%.*]], label [[IF_END2430:%.*]]
// SIMD-ONLY0:       if.then2429:
// SIMD-ONLY0-NEXT:    [[TMP1503:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1503]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2430]]
// SIMD-ONLY0:       if.end2430:
// SIMD-ONLY0-NEXT:    [[TMP1504:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2431:%.*]] = zext i16 [[TMP1504]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1505:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2432:%.*]] = zext i16 [[TMP1505]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2433:%.*]] = icmp sgt i32 [[CONV2431]], [[CONV2432]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2433]], label [[IF_THEN2435:%.*]], label [[IF_END2436:%.*]]
// SIMD-ONLY0:       if.then2435:
// SIMD-ONLY0-NEXT:    [[TMP1506:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1506]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2436]]
// SIMD-ONLY0:       if.end2436:
// SIMD-ONLY0-NEXT:    [[TMP1507:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1507]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1508:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2437:%.*]] = zext i16 [[TMP1508]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1509:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2438:%.*]] = zext i16 [[TMP1509]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2439:%.*]] = icmp sgt i32 [[CONV2437]], [[CONV2438]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2439]], label [[IF_THEN2441:%.*]], label [[IF_END2442:%.*]]
// SIMD-ONLY0:       if.then2441:
// SIMD-ONLY0-NEXT:    [[TMP1510:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1510]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2442]]
// SIMD-ONLY0:       if.end2442:
// SIMD-ONLY0-NEXT:    [[TMP1511:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1511]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1512:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2443:%.*]] = zext i16 [[TMP1512]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1513:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2444:%.*]] = zext i16 [[TMP1513]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2445:%.*]] = icmp slt i32 [[CONV2443]], [[CONV2444]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2445]], label [[IF_THEN2447:%.*]], label [[IF_END2448:%.*]]
// SIMD-ONLY0:       if.then2447:
// SIMD-ONLY0-NEXT:    [[TMP1514:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1514]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2448]]
// SIMD-ONLY0:       if.end2448:
// SIMD-ONLY0-NEXT:    [[TMP1515:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1515]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1516:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2449:%.*]] = zext i16 [[TMP1516]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1517:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2450:%.*]] = zext i16 [[TMP1517]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2451:%.*]] = icmp slt i32 [[CONV2449]], [[CONV2450]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2451]], label [[IF_THEN2453:%.*]], label [[IF_END2454:%.*]]
// SIMD-ONLY0:       if.then2453:
// SIMD-ONLY0-NEXT:    [[TMP1518:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1518]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2454]]
// SIMD-ONLY0:       if.end2454:
// SIMD-ONLY0-NEXT:    [[TMP1519:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1519]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1520:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2455:%.*]] = zext i16 [[TMP1520]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1521:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2456:%.*]] = zext i16 [[TMP1521]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2457:%.*]] = icmp eq i32 [[CONV2455]], [[CONV2456]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2457]], label [[IF_THEN2459:%.*]], label [[IF_END2460:%.*]]
// SIMD-ONLY0:       if.then2459:
// SIMD-ONLY0-NEXT:    [[TMP1522:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1522]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2460]]
// SIMD-ONLY0:       if.end2460:
// SIMD-ONLY0-NEXT:    [[TMP1523:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1523]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1524:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2461:%.*]] = zext i16 [[TMP1524]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1525:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2462:%.*]] = zext i16 [[TMP1525]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2463:%.*]] = icmp eq i32 [[CONV2461]], [[CONV2462]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2463]], label [[IF_THEN2465:%.*]], label [[IF_END2466:%.*]]
// SIMD-ONLY0:       if.then2465:
// SIMD-ONLY0-NEXT:    [[TMP1526:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1526]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2466]]
// SIMD-ONLY0:       if.end2466:
// SIMD-ONLY0-NEXT:    [[TMP1527:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1527]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1528:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2467:%.*]] = zext i16 [[TMP1528]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1529:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2468:%.*]] = zext i16 [[TMP1529]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2469:%.*]] = icmp eq i32 [[CONV2467]], [[CONV2468]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2469]], label [[IF_THEN2471:%.*]], label [[IF_ELSE2472:%.*]]
// SIMD-ONLY0:       if.then2471:
// SIMD-ONLY0-NEXT:    [[TMP1530:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1530]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2473:%.*]]
// SIMD-ONLY0:       if.else2472:
// SIMD-ONLY0-NEXT:    [[TMP1531:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1531]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2473]]
// SIMD-ONLY0:       if.end2473:
// SIMD-ONLY0-NEXT:    [[TMP1532:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2474:%.*]] = zext i16 [[TMP1532]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1533:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2475:%.*]] = zext i16 [[TMP1533]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2476:%.*]] = icmp eq i32 [[CONV2474]], [[CONV2475]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2476]], label [[IF_THEN2478:%.*]], label [[IF_ELSE2479:%.*]]
// SIMD-ONLY0:       if.then2478:
// SIMD-ONLY0-NEXT:    [[TMP1534:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1534]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2480:%.*]]
// SIMD-ONLY0:       if.else2479:
// SIMD-ONLY0-NEXT:    [[TMP1535:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1535]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2480]]
// SIMD-ONLY0:       if.end2480:
// SIMD-ONLY0-NEXT:    [[TMP1536:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2481:%.*]] = zext i16 [[TMP1536]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1537:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2482:%.*]] = zext i16 [[TMP1537]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2483:%.*]] = icmp eq i32 [[CONV2481]], [[CONV2482]]
// SIMD-ONLY0-NEXT:    [[CONV2484:%.*]] = zext i1 [[CMP2483]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2485:%.*]] = trunc i32 [[CONV2484]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2485]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1538:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2486:%.*]] = icmp ne i16 [[TMP1538]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2486]], label [[IF_THEN2487:%.*]], label [[IF_END2488:%.*]]
// SIMD-ONLY0:       if.then2487:
// SIMD-ONLY0-NEXT:    [[TMP1539:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1539]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2488]]
// SIMD-ONLY0:       if.end2488:
// SIMD-ONLY0-NEXT:    [[TMP1540:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2489:%.*]] = zext i16 [[TMP1540]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1541:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2490:%.*]] = zext i16 [[TMP1541]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2491:%.*]] = icmp eq i32 [[CONV2489]], [[CONV2490]]
// SIMD-ONLY0-NEXT:    [[CONV2492:%.*]] = zext i1 [[CMP2491]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2493:%.*]] = trunc i32 [[CONV2492]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2493]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1542:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2494:%.*]] = icmp ne i16 [[TMP1542]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2494]], label [[IF_THEN2495:%.*]], label [[IF_END2496:%.*]]
// SIMD-ONLY0:       if.then2495:
// SIMD-ONLY0-NEXT:    [[TMP1543:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1543]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2496]]
// SIMD-ONLY0:       if.end2496:
// SIMD-ONLY0-NEXT:    [[TMP1544:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2497:%.*]] = zext i16 [[TMP1544]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1545:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2498:%.*]] = zext i16 [[TMP1545]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2499:%.*]] = icmp eq i32 [[CONV2497]], [[CONV2498]]
// SIMD-ONLY0-NEXT:    [[CONV2500:%.*]] = zext i1 [[CMP2499]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2501:%.*]] = trunc i32 [[CONV2500]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2501]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1546:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2502:%.*]] = icmp ne i16 [[TMP1546]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2502]], label [[IF_THEN2503:%.*]], label [[IF_ELSE2504:%.*]]
// SIMD-ONLY0:       if.then2503:
// SIMD-ONLY0-NEXT:    [[TMP1547:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1547]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2505:%.*]]
// SIMD-ONLY0:       if.else2504:
// SIMD-ONLY0-NEXT:    [[TMP1548:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1548]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2505]]
// SIMD-ONLY0:       if.end2505:
// SIMD-ONLY0-NEXT:    [[TMP1549:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2506:%.*]] = zext i16 [[TMP1549]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1550:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2507:%.*]] = zext i16 [[TMP1550]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2508:%.*]] = icmp eq i32 [[CONV2506]], [[CONV2507]]
// SIMD-ONLY0-NEXT:    [[CONV2509:%.*]] = zext i1 [[CMP2508]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2510:%.*]] = trunc i32 [[CONV2509]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2510]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1551:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2511:%.*]] = icmp ne i16 [[TMP1551]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2511]], label [[IF_THEN2512:%.*]], label [[IF_ELSE2513:%.*]]
// SIMD-ONLY0:       if.then2512:
// SIMD-ONLY0-NEXT:    [[TMP1552:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1552]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2514:%.*]]
// SIMD-ONLY0:       if.else2513:
// SIMD-ONLY0-NEXT:    [[TMP1553:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1553]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2514]]
// SIMD-ONLY0:       if.end2514:
// SIMD-ONLY0-NEXT:    [[TMP1554:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1554]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1555:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2515:%.*]] = zext i16 [[TMP1555]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1556:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2516:%.*]] = zext i16 [[TMP1556]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2517:%.*]] = icmp sgt i32 [[CONV2515]], [[CONV2516]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2517]], label [[IF_THEN2519:%.*]], label [[IF_END2520:%.*]]
// SIMD-ONLY0:       if.then2519:
// SIMD-ONLY0-NEXT:    [[TMP1557:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1557]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2520]]
// SIMD-ONLY0:       if.end2520:
// SIMD-ONLY0-NEXT:    [[TMP1558:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1558]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1559:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2521:%.*]] = zext i16 [[TMP1559]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1560:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2522:%.*]] = zext i16 [[TMP1560]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2523:%.*]] = icmp sgt i32 [[CONV2521]], [[CONV2522]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2523]], label [[IF_THEN2525:%.*]], label [[IF_END2526:%.*]]
// SIMD-ONLY0:       if.then2525:
// SIMD-ONLY0-NEXT:    [[TMP1561:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1561]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2526]]
// SIMD-ONLY0:       if.end2526:
// SIMD-ONLY0-NEXT:    [[TMP1562:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1562]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1563:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2527:%.*]] = zext i16 [[TMP1563]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1564:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2528:%.*]] = zext i16 [[TMP1564]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2529:%.*]] = icmp slt i32 [[CONV2527]], [[CONV2528]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2529]], label [[IF_THEN2531:%.*]], label [[IF_END2532:%.*]]
// SIMD-ONLY0:       if.then2531:
// SIMD-ONLY0-NEXT:    [[TMP1565:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1565]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2532]]
// SIMD-ONLY0:       if.end2532:
// SIMD-ONLY0-NEXT:    [[TMP1566:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1566]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1567:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2533:%.*]] = zext i16 [[TMP1567]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1568:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2534:%.*]] = zext i16 [[TMP1568]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2535:%.*]] = icmp slt i32 [[CONV2533]], [[CONV2534]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2535]], label [[IF_THEN2537:%.*]], label [[IF_END2538:%.*]]
// SIMD-ONLY0:       if.then2537:
// SIMD-ONLY0-NEXT:    [[TMP1569:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1569]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2538]]
// SIMD-ONLY0:       if.end2538:
// SIMD-ONLY0-NEXT:    [[TMP1570:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1570]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1571:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2539:%.*]] = zext i16 [[TMP1571]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1572:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2540:%.*]] = zext i16 [[TMP1572]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2541:%.*]] = icmp eq i32 [[CONV2539]], [[CONV2540]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2541]], label [[IF_THEN2543:%.*]], label [[IF_END2544:%.*]]
// SIMD-ONLY0:       if.then2543:
// SIMD-ONLY0-NEXT:    [[TMP1573:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1573]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2544]]
// SIMD-ONLY0:       if.end2544:
// SIMD-ONLY0-NEXT:    [[TMP1574:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1574]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1575:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2545:%.*]] = zext i16 [[TMP1575]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1576:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2546:%.*]] = zext i16 [[TMP1576]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2547:%.*]] = icmp eq i32 [[CONV2545]], [[CONV2546]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2547]], label [[IF_THEN2549:%.*]], label [[IF_END2550:%.*]]
// SIMD-ONLY0:       if.then2549:
// SIMD-ONLY0-NEXT:    [[TMP1577:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1577]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2550]]
// SIMD-ONLY0:       if.end2550:
// SIMD-ONLY0-NEXT:    [[TMP1578:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2551:%.*]] = zext i16 [[TMP1578]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1579:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2552:%.*]] = zext i16 [[TMP1579]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2553:%.*]] = icmp sgt i32 [[CONV2551]], [[CONV2552]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2553]], label [[IF_THEN2555:%.*]], label [[IF_END2556:%.*]]
// SIMD-ONLY0:       if.then2555:
// SIMD-ONLY0-NEXT:    [[TMP1580:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1580]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2556]]
// SIMD-ONLY0:       if.end2556:
// SIMD-ONLY0-NEXT:    [[TMP1581:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1581]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1582:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2557:%.*]] = zext i16 [[TMP1582]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1583:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2558:%.*]] = zext i16 [[TMP1583]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2559:%.*]] = icmp sgt i32 [[CONV2557]], [[CONV2558]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2559]], label [[IF_THEN2561:%.*]], label [[IF_END2562:%.*]]
// SIMD-ONLY0:       if.then2561:
// SIMD-ONLY0-NEXT:    [[TMP1584:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1584]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2562]]
// SIMD-ONLY0:       if.end2562:
// SIMD-ONLY0-NEXT:    [[TMP1585:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1585]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1586:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2563:%.*]] = zext i16 [[TMP1586]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1587:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2564:%.*]] = zext i16 [[TMP1587]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2565:%.*]] = icmp slt i32 [[CONV2563]], [[CONV2564]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2565]], label [[IF_THEN2567:%.*]], label [[IF_END2568:%.*]]
// SIMD-ONLY0:       if.then2567:
// SIMD-ONLY0-NEXT:    [[TMP1588:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1588]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2568]]
// SIMD-ONLY0:       if.end2568:
// SIMD-ONLY0-NEXT:    [[TMP1589:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1589]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1590:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2569:%.*]] = zext i16 [[TMP1590]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1591:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2570:%.*]] = zext i16 [[TMP1591]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2571:%.*]] = icmp slt i32 [[CONV2569]], [[CONV2570]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2571]], label [[IF_THEN2573:%.*]], label [[IF_END2574:%.*]]
// SIMD-ONLY0:       if.then2573:
// SIMD-ONLY0-NEXT:    [[TMP1592:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1592]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2574]]
// SIMD-ONLY0:       if.end2574:
// SIMD-ONLY0-NEXT:    [[TMP1593:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1593]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1594:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2575:%.*]] = zext i16 [[TMP1594]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1595:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2576:%.*]] = zext i16 [[TMP1595]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2577:%.*]] = icmp eq i32 [[CONV2575]], [[CONV2576]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2577]], label [[IF_THEN2579:%.*]], label [[IF_END2580:%.*]]
// SIMD-ONLY0:       if.then2579:
// SIMD-ONLY0-NEXT:    [[TMP1596:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1596]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2580]]
// SIMD-ONLY0:       if.end2580:
// SIMD-ONLY0-NEXT:    [[TMP1597:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1597]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1598:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2581:%.*]] = zext i16 [[TMP1598]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1599:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2582:%.*]] = zext i16 [[TMP1599]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2583:%.*]] = icmp eq i32 [[CONV2581]], [[CONV2582]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2583]], label [[IF_THEN2585:%.*]], label [[IF_END2586:%.*]]
// SIMD-ONLY0:       if.then2585:
// SIMD-ONLY0-NEXT:    [[TMP1600:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1600]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2586]]
// SIMD-ONLY0:       if.end2586:
// SIMD-ONLY0-NEXT:    [[TMP1601:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1601]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1602:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2587:%.*]] = zext i16 [[TMP1602]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1603:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2588:%.*]] = zext i16 [[TMP1603]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2589:%.*]] = icmp eq i32 [[CONV2587]], [[CONV2588]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2589]], label [[IF_THEN2591:%.*]], label [[IF_ELSE2592:%.*]]
// SIMD-ONLY0:       if.then2591:
// SIMD-ONLY0-NEXT:    [[TMP1604:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1604]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2593:%.*]]
// SIMD-ONLY0:       if.else2592:
// SIMD-ONLY0-NEXT:    [[TMP1605:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1605]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2593]]
// SIMD-ONLY0:       if.end2593:
// SIMD-ONLY0-NEXT:    [[TMP1606:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2594:%.*]] = zext i16 [[TMP1606]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1607:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2595:%.*]] = zext i16 [[TMP1607]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2596:%.*]] = icmp eq i32 [[CONV2594]], [[CONV2595]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2596]], label [[IF_THEN2598:%.*]], label [[IF_ELSE2599:%.*]]
// SIMD-ONLY0:       if.then2598:
// SIMD-ONLY0-NEXT:    [[TMP1608:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1608]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2600:%.*]]
// SIMD-ONLY0:       if.else2599:
// SIMD-ONLY0-NEXT:    [[TMP1609:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1609]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2600]]
// SIMD-ONLY0:       if.end2600:
// SIMD-ONLY0-NEXT:    [[TMP1610:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2601:%.*]] = zext i16 [[TMP1610]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1611:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2602:%.*]] = zext i16 [[TMP1611]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2603:%.*]] = icmp eq i32 [[CONV2601]], [[CONV2602]]
// SIMD-ONLY0-NEXT:    [[CONV2604:%.*]] = zext i1 [[CMP2603]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2605:%.*]] = trunc i32 [[CONV2604]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2605]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1612:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2606:%.*]] = icmp ne i16 [[TMP1612]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2606]], label [[IF_THEN2607:%.*]], label [[IF_END2608:%.*]]
// SIMD-ONLY0:       if.then2607:
// SIMD-ONLY0-NEXT:    [[TMP1613:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1613]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2608]]
// SIMD-ONLY0:       if.end2608:
// SIMD-ONLY0-NEXT:    [[TMP1614:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2609:%.*]] = zext i16 [[TMP1614]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1615:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2610:%.*]] = zext i16 [[TMP1615]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2611:%.*]] = icmp eq i32 [[CONV2609]], [[CONV2610]]
// SIMD-ONLY0-NEXT:    [[CONV2612:%.*]] = zext i1 [[CMP2611]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2613:%.*]] = trunc i32 [[CONV2612]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2613]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1616:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2614:%.*]] = icmp ne i16 [[TMP1616]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2614]], label [[IF_THEN2615:%.*]], label [[IF_END2616:%.*]]
// SIMD-ONLY0:       if.then2615:
// SIMD-ONLY0-NEXT:    [[TMP1617:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1617]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2616]]
// SIMD-ONLY0:       if.end2616:
// SIMD-ONLY0-NEXT:    [[TMP1618:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2617:%.*]] = zext i16 [[TMP1618]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1619:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2618:%.*]] = zext i16 [[TMP1619]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2619:%.*]] = icmp eq i32 [[CONV2617]], [[CONV2618]]
// SIMD-ONLY0-NEXT:    [[CONV2620:%.*]] = zext i1 [[CMP2619]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2621:%.*]] = trunc i32 [[CONV2620]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2621]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1620:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2622:%.*]] = icmp ne i16 [[TMP1620]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2622]], label [[IF_THEN2623:%.*]], label [[IF_ELSE2624:%.*]]
// SIMD-ONLY0:       if.then2623:
// SIMD-ONLY0-NEXT:    [[TMP1621:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1621]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2625:%.*]]
// SIMD-ONLY0:       if.else2624:
// SIMD-ONLY0-NEXT:    [[TMP1622:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1622]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2625]]
// SIMD-ONLY0:       if.end2625:
// SIMD-ONLY0-NEXT:    [[TMP1623:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2626:%.*]] = zext i16 [[TMP1623]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1624:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2627:%.*]] = zext i16 [[TMP1624]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2628:%.*]] = icmp eq i32 [[CONV2626]], [[CONV2627]]
// SIMD-ONLY0-NEXT:    [[CONV2629:%.*]] = zext i1 [[CMP2628]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2630:%.*]] = trunc i32 [[CONV2629]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2630]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1625:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2631:%.*]] = icmp ne i16 [[TMP1625]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2631]], label [[IF_THEN2632:%.*]], label [[IF_ELSE2633:%.*]]
// SIMD-ONLY0:       if.then2632:
// SIMD-ONLY0-NEXT:    [[TMP1626:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1626]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2634:%.*]]
// SIMD-ONLY0:       if.else2633:
// SIMD-ONLY0-NEXT:    [[TMP1627:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1627]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2634]]
// SIMD-ONLY0:       if.end2634:
// SIMD-ONLY0-NEXT:    [[TMP1628:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1628]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1629:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2635:%.*]] = zext i16 [[TMP1629]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1630:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2636:%.*]] = zext i16 [[TMP1630]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2637:%.*]] = icmp sgt i32 [[CONV2635]], [[CONV2636]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2637]], label [[IF_THEN2639:%.*]], label [[IF_END2640:%.*]]
// SIMD-ONLY0:       if.then2639:
// SIMD-ONLY0-NEXT:    [[TMP1631:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1631]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2640]]
// SIMD-ONLY0:       if.end2640:
// SIMD-ONLY0-NEXT:    [[TMP1632:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1632]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1633:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2641:%.*]] = zext i16 [[TMP1633]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1634:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2642:%.*]] = zext i16 [[TMP1634]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2643:%.*]] = icmp sgt i32 [[CONV2641]], [[CONV2642]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2643]], label [[IF_THEN2645:%.*]], label [[IF_END2646:%.*]]
// SIMD-ONLY0:       if.then2645:
// SIMD-ONLY0-NEXT:    [[TMP1635:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1635]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2646]]
// SIMD-ONLY0:       if.end2646:
// SIMD-ONLY0-NEXT:    [[TMP1636:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1636]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1637:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2647:%.*]] = zext i16 [[TMP1637]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1638:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2648:%.*]] = zext i16 [[TMP1638]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2649:%.*]] = icmp slt i32 [[CONV2647]], [[CONV2648]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2649]], label [[IF_THEN2651:%.*]], label [[IF_END2652:%.*]]
// SIMD-ONLY0:       if.then2651:
// SIMD-ONLY0-NEXT:    [[TMP1639:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1639]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2652]]
// SIMD-ONLY0:       if.end2652:
// SIMD-ONLY0-NEXT:    [[TMP1640:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1640]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1641:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2653:%.*]] = zext i16 [[TMP1641]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1642:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2654:%.*]] = zext i16 [[TMP1642]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2655:%.*]] = icmp slt i32 [[CONV2653]], [[CONV2654]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2655]], label [[IF_THEN2657:%.*]], label [[IF_END2658:%.*]]
// SIMD-ONLY0:       if.then2657:
// SIMD-ONLY0-NEXT:    [[TMP1643:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1643]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2658]]
// SIMD-ONLY0:       if.end2658:
// SIMD-ONLY0-NEXT:    [[TMP1644:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1644]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1645:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2659:%.*]] = zext i16 [[TMP1645]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1646:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2660:%.*]] = zext i16 [[TMP1646]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2661:%.*]] = icmp eq i32 [[CONV2659]], [[CONV2660]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2661]], label [[IF_THEN2663:%.*]], label [[IF_END2664:%.*]]
// SIMD-ONLY0:       if.then2663:
// SIMD-ONLY0-NEXT:    [[TMP1647:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1647]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2664]]
// SIMD-ONLY0:       if.end2664:
// SIMD-ONLY0-NEXT:    [[TMP1648:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1648]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1649:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2665:%.*]] = zext i16 [[TMP1649]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1650:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2666:%.*]] = zext i16 [[TMP1650]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2667:%.*]] = icmp eq i32 [[CONV2665]], [[CONV2666]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2667]], label [[IF_THEN2669:%.*]], label [[IF_END2670:%.*]]
// SIMD-ONLY0:       if.then2669:
// SIMD-ONLY0-NEXT:    [[TMP1651:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1651]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2670]]
// SIMD-ONLY0:       if.end2670:
// SIMD-ONLY0-NEXT:    [[TMP1652:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2671:%.*]] = zext i16 [[TMP1652]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1653:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2672:%.*]] = zext i16 [[TMP1653]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2673:%.*]] = icmp sgt i32 [[CONV2671]], [[CONV2672]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2673]], label [[IF_THEN2675:%.*]], label [[IF_END2676:%.*]]
// SIMD-ONLY0:       if.then2675:
// SIMD-ONLY0-NEXT:    [[TMP1654:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1654]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2676]]
// SIMD-ONLY0:       if.end2676:
// SIMD-ONLY0-NEXT:    [[TMP1655:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1655]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1656:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2677:%.*]] = zext i16 [[TMP1656]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1657:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2678:%.*]] = zext i16 [[TMP1657]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2679:%.*]] = icmp sgt i32 [[CONV2677]], [[CONV2678]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2679]], label [[IF_THEN2681:%.*]], label [[IF_END2682:%.*]]
// SIMD-ONLY0:       if.then2681:
// SIMD-ONLY0-NEXT:    [[TMP1658:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1658]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2682]]
// SIMD-ONLY0:       if.end2682:
// SIMD-ONLY0-NEXT:    [[TMP1659:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1659]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1660:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2683:%.*]] = zext i16 [[TMP1660]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1661:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2684:%.*]] = zext i16 [[TMP1661]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2685:%.*]] = icmp slt i32 [[CONV2683]], [[CONV2684]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2685]], label [[IF_THEN2687:%.*]], label [[IF_END2688:%.*]]
// SIMD-ONLY0:       if.then2687:
// SIMD-ONLY0-NEXT:    [[TMP1662:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1662]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2688]]
// SIMD-ONLY0:       if.end2688:
// SIMD-ONLY0-NEXT:    [[TMP1663:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1663]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1664:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2689:%.*]] = zext i16 [[TMP1664]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1665:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2690:%.*]] = zext i16 [[TMP1665]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2691:%.*]] = icmp slt i32 [[CONV2689]], [[CONV2690]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2691]], label [[IF_THEN2693:%.*]], label [[IF_END2694:%.*]]
// SIMD-ONLY0:       if.then2693:
// SIMD-ONLY0-NEXT:    [[TMP1666:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1666]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2694]]
// SIMD-ONLY0:       if.end2694:
// SIMD-ONLY0-NEXT:    [[TMP1667:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1667]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1668:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2695:%.*]] = zext i16 [[TMP1668]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1669:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2696:%.*]] = zext i16 [[TMP1669]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2697:%.*]] = icmp eq i32 [[CONV2695]], [[CONV2696]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2697]], label [[IF_THEN2699:%.*]], label [[IF_END2700:%.*]]
// SIMD-ONLY0:       if.then2699:
// SIMD-ONLY0-NEXT:    [[TMP1670:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1670]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2700]]
// SIMD-ONLY0:       if.end2700:
// SIMD-ONLY0-NEXT:    [[TMP1671:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1671]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1672:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2701:%.*]] = zext i16 [[TMP1672]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1673:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2702:%.*]] = zext i16 [[TMP1673]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2703:%.*]] = icmp eq i32 [[CONV2701]], [[CONV2702]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2703]], label [[IF_THEN2705:%.*]], label [[IF_END2706:%.*]]
// SIMD-ONLY0:       if.then2705:
// SIMD-ONLY0-NEXT:    [[TMP1674:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1674]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2706]]
// SIMD-ONLY0:       if.end2706:
// SIMD-ONLY0-NEXT:    [[TMP1675:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1675]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1676:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2707:%.*]] = zext i16 [[TMP1676]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1677:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2708:%.*]] = zext i16 [[TMP1677]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2709:%.*]] = icmp eq i32 [[CONV2707]], [[CONV2708]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2709]], label [[IF_THEN2711:%.*]], label [[IF_ELSE2712:%.*]]
// SIMD-ONLY0:       if.then2711:
// SIMD-ONLY0-NEXT:    [[TMP1678:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1678]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2713:%.*]]
// SIMD-ONLY0:       if.else2712:
// SIMD-ONLY0-NEXT:    [[TMP1679:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1679]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2713]]
// SIMD-ONLY0:       if.end2713:
// SIMD-ONLY0-NEXT:    [[TMP1680:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2714:%.*]] = zext i16 [[TMP1680]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1681:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2715:%.*]] = zext i16 [[TMP1681]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2716:%.*]] = icmp eq i32 [[CONV2714]], [[CONV2715]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2716]], label [[IF_THEN2718:%.*]], label [[IF_ELSE2719:%.*]]
// SIMD-ONLY0:       if.then2718:
// SIMD-ONLY0-NEXT:    [[TMP1682:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1682]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2720:%.*]]
// SIMD-ONLY0:       if.else2719:
// SIMD-ONLY0-NEXT:    [[TMP1683:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1683]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2720]]
// SIMD-ONLY0:       if.end2720:
// SIMD-ONLY0-NEXT:    [[TMP1684:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2721:%.*]] = zext i16 [[TMP1684]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1685:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2722:%.*]] = zext i16 [[TMP1685]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2723:%.*]] = icmp eq i32 [[CONV2721]], [[CONV2722]]
// SIMD-ONLY0-NEXT:    [[CONV2724:%.*]] = zext i1 [[CMP2723]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2725:%.*]] = trunc i32 [[CONV2724]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2725]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1686:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2726:%.*]] = icmp ne i16 [[TMP1686]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2726]], label [[IF_THEN2727:%.*]], label [[IF_END2728:%.*]]
// SIMD-ONLY0:       if.then2727:
// SIMD-ONLY0-NEXT:    [[TMP1687:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1687]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2728]]
// SIMD-ONLY0:       if.end2728:
// SIMD-ONLY0-NEXT:    [[TMP1688:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2729:%.*]] = zext i16 [[TMP1688]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1689:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2730:%.*]] = zext i16 [[TMP1689]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2731:%.*]] = icmp eq i32 [[CONV2729]], [[CONV2730]]
// SIMD-ONLY0-NEXT:    [[CONV2732:%.*]] = zext i1 [[CMP2731]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2733:%.*]] = trunc i32 [[CONV2732]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2733]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1690:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2734:%.*]] = icmp ne i16 [[TMP1690]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2734]], label [[IF_THEN2735:%.*]], label [[IF_END2736:%.*]]
// SIMD-ONLY0:       if.then2735:
// SIMD-ONLY0-NEXT:    [[TMP1691:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1691]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2736]]
// SIMD-ONLY0:       if.end2736:
// SIMD-ONLY0-NEXT:    [[TMP1692:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2737:%.*]] = zext i16 [[TMP1692]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1693:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2738:%.*]] = zext i16 [[TMP1693]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2739:%.*]] = icmp eq i32 [[CONV2737]], [[CONV2738]]
// SIMD-ONLY0-NEXT:    [[CONV2740:%.*]] = zext i1 [[CMP2739]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2741:%.*]] = trunc i32 [[CONV2740]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2741]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1694:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2742:%.*]] = icmp ne i16 [[TMP1694]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2742]], label [[IF_THEN2743:%.*]], label [[IF_ELSE2744:%.*]]
// SIMD-ONLY0:       if.then2743:
// SIMD-ONLY0-NEXT:    [[TMP1695:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1695]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2745:%.*]]
// SIMD-ONLY0:       if.else2744:
// SIMD-ONLY0-NEXT:    [[TMP1696:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1696]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2745]]
// SIMD-ONLY0:       if.end2745:
// SIMD-ONLY0-NEXT:    [[TMP1697:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2746:%.*]] = zext i16 [[TMP1697]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1698:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2747:%.*]] = zext i16 [[TMP1698]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2748:%.*]] = icmp eq i32 [[CONV2746]], [[CONV2747]]
// SIMD-ONLY0-NEXT:    [[CONV2749:%.*]] = zext i1 [[CMP2748]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2750:%.*]] = trunc i32 [[CONV2749]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2750]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1699:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2751:%.*]] = icmp ne i16 [[TMP1699]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2751]], label [[IF_THEN2752:%.*]], label [[IF_ELSE2753:%.*]]
// SIMD-ONLY0:       if.then2752:
// SIMD-ONLY0-NEXT:    [[TMP1700:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1700]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2754:%.*]]
// SIMD-ONLY0:       if.else2753:
// SIMD-ONLY0-NEXT:    [[TMP1701:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1701]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2754]]
// SIMD-ONLY0:       if.end2754:
// SIMD-ONLY0-NEXT:    [[TMP1702:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1702]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1703:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2755:%.*]] = zext i16 [[TMP1703]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1704:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2756:%.*]] = zext i16 [[TMP1704]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2757:%.*]] = icmp sgt i32 [[CONV2755]], [[CONV2756]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2757]], label [[IF_THEN2759:%.*]], label [[IF_END2760:%.*]]
// SIMD-ONLY0:       if.then2759:
// SIMD-ONLY0-NEXT:    [[TMP1705:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1705]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2760]]
// SIMD-ONLY0:       if.end2760:
// SIMD-ONLY0-NEXT:    [[TMP1706:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1706]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1707:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2761:%.*]] = zext i16 [[TMP1707]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1708:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2762:%.*]] = zext i16 [[TMP1708]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2763:%.*]] = icmp sgt i32 [[CONV2761]], [[CONV2762]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2763]], label [[IF_THEN2765:%.*]], label [[IF_END2766:%.*]]
// SIMD-ONLY0:       if.then2765:
// SIMD-ONLY0-NEXT:    [[TMP1709:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1709]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2766]]
// SIMD-ONLY0:       if.end2766:
// SIMD-ONLY0-NEXT:    [[TMP1710:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1710]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1711:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2767:%.*]] = zext i16 [[TMP1711]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1712:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2768:%.*]] = zext i16 [[TMP1712]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2769:%.*]] = icmp slt i32 [[CONV2767]], [[CONV2768]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2769]], label [[IF_THEN2771:%.*]], label [[IF_END2772:%.*]]
// SIMD-ONLY0:       if.then2771:
// SIMD-ONLY0-NEXT:    [[TMP1713:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1713]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2772]]
// SIMD-ONLY0:       if.end2772:
// SIMD-ONLY0-NEXT:    [[TMP1714:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1714]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1715:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2773:%.*]] = zext i16 [[TMP1715]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1716:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2774:%.*]] = zext i16 [[TMP1716]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2775:%.*]] = icmp slt i32 [[CONV2773]], [[CONV2774]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2775]], label [[IF_THEN2777:%.*]], label [[IF_END2778:%.*]]
// SIMD-ONLY0:       if.then2777:
// SIMD-ONLY0-NEXT:    [[TMP1717:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1717]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2778]]
// SIMD-ONLY0:       if.end2778:
// SIMD-ONLY0-NEXT:    [[TMP1718:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1718]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1719:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2779:%.*]] = zext i16 [[TMP1719]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1720:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2780:%.*]] = zext i16 [[TMP1720]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2781:%.*]] = icmp eq i32 [[CONV2779]], [[CONV2780]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2781]], label [[IF_THEN2783:%.*]], label [[IF_END2784:%.*]]
// SIMD-ONLY0:       if.then2783:
// SIMD-ONLY0-NEXT:    [[TMP1721:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1721]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2784]]
// SIMD-ONLY0:       if.end2784:
// SIMD-ONLY0-NEXT:    [[TMP1722:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1722]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1723:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2785:%.*]] = zext i16 [[TMP1723]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1724:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2786:%.*]] = zext i16 [[TMP1724]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2787:%.*]] = icmp eq i32 [[CONV2785]], [[CONV2786]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2787]], label [[IF_THEN2789:%.*]], label [[IF_END2790:%.*]]
// SIMD-ONLY0:       if.then2789:
// SIMD-ONLY0-NEXT:    [[TMP1725:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1725]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2790]]
// SIMD-ONLY0:       if.end2790:
// SIMD-ONLY0-NEXT:    [[TMP1726:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2791:%.*]] = zext i16 [[TMP1726]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1727:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2792:%.*]] = zext i16 [[TMP1727]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2793:%.*]] = icmp sgt i32 [[CONV2791]], [[CONV2792]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2793]], label [[IF_THEN2795:%.*]], label [[IF_END2796:%.*]]
// SIMD-ONLY0:       if.then2795:
// SIMD-ONLY0-NEXT:    [[TMP1728:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1728]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2796]]
// SIMD-ONLY0:       if.end2796:
// SIMD-ONLY0-NEXT:    [[TMP1729:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1729]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1730:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2797:%.*]] = zext i16 [[TMP1730]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1731:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2798:%.*]] = zext i16 [[TMP1731]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2799:%.*]] = icmp sgt i32 [[CONV2797]], [[CONV2798]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2799]], label [[IF_THEN2801:%.*]], label [[IF_END2802:%.*]]
// SIMD-ONLY0:       if.then2801:
// SIMD-ONLY0-NEXT:    [[TMP1732:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1732]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2802]]
// SIMD-ONLY0:       if.end2802:
// SIMD-ONLY0-NEXT:    [[TMP1733:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1733]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1734:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2803:%.*]] = zext i16 [[TMP1734]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1735:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2804:%.*]] = zext i16 [[TMP1735]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2805:%.*]] = icmp slt i32 [[CONV2803]], [[CONV2804]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2805]], label [[IF_THEN2807:%.*]], label [[IF_END2808:%.*]]
// SIMD-ONLY0:       if.then2807:
// SIMD-ONLY0-NEXT:    [[TMP1736:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1736]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2808]]
// SIMD-ONLY0:       if.end2808:
// SIMD-ONLY0-NEXT:    [[TMP1737:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1737]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1738:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2809:%.*]] = zext i16 [[TMP1738]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1739:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2810:%.*]] = zext i16 [[TMP1739]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2811:%.*]] = icmp slt i32 [[CONV2809]], [[CONV2810]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2811]], label [[IF_THEN2813:%.*]], label [[IF_END2814:%.*]]
// SIMD-ONLY0:       if.then2813:
// SIMD-ONLY0-NEXT:    [[TMP1740:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1740]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2814]]
// SIMD-ONLY0:       if.end2814:
// SIMD-ONLY0-NEXT:    [[TMP1741:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1741]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1742:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2815:%.*]] = zext i16 [[TMP1742]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1743:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2816:%.*]] = zext i16 [[TMP1743]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2817:%.*]] = icmp eq i32 [[CONV2815]], [[CONV2816]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2817]], label [[IF_THEN2819:%.*]], label [[IF_END2820:%.*]]
// SIMD-ONLY0:       if.then2819:
// SIMD-ONLY0-NEXT:    [[TMP1744:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1744]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2820]]
// SIMD-ONLY0:       if.end2820:
// SIMD-ONLY0-NEXT:    [[TMP1745:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1745]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1746:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2821:%.*]] = zext i16 [[TMP1746]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1747:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2822:%.*]] = zext i16 [[TMP1747]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2823:%.*]] = icmp eq i32 [[CONV2821]], [[CONV2822]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2823]], label [[IF_THEN2825:%.*]], label [[IF_END2826:%.*]]
// SIMD-ONLY0:       if.then2825:
// SIMD-ONLY0-NEXT:    [[TMP1748:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1748]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2826]]
// SIMD-ONLY0:       if.end2826:
// SIMD-ONLY0-NEXT:    [[TMP1749:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1749]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1750:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2827:%.*]] = zext i16 [[TMP1750]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1751:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2828:%.*]] = zext i16 [[TMP1751]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2829:%.*]] = icmp eq i32 [[CONV2827]], [[CONV2828]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2829]], label [[IF_THEN2831:%.*]], label [[IF_ELSE2832:%.*]]
// SIMD-ONLY0:       if.then2831:
// SIMD-ONLY0-NEXT:    [[TMP1752:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1752]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2833:%.*]]
// SIMD-ONLY0:       if.else2832:
// SIMD-ONLY0-NEXT:    [[TMP1753:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1753]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2833]]
// SIMD-ONLY0:       if.end2833:
// SIMD-ONLY0-NEXT:    [[TMP1754:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2834:%.*]] = zext i16 [[TMP1754]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1755:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2835:%.*]] = zext i16 [[TMP1755]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2836:%.*]] = icmp eq i32 [[CONV2834]], [[CONV2835]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2836]], label [[IF_THEN2838:%.*]], label [[IF_ELSE2839:%.*]]
// SIMD-ONLY0:       if.then2838:
// SIMD-ONLY0-NEXT:    [[TMP1756:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1756]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2840:%.*]]
// SIMD-ONLY0:       if.else2839:
// SIMD-ONLY0-NEXT:    [[TMP1757:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1757]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2840]]
// SIMD-ONLY0:       if.end2840:
// SIMD-ONLY0-NEXT:    [[TMP1758:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2841:%.*]] = zext i16 [[TMP1758]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1759:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2842:%.*]] = zext i16 [[TMP1759]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2843:%.*]] = icmp eq i32 [[CONV2841]], [[CONV2842]]
// SIMD-ONLY0-NEXT:    [[CONV2844:%.*]] = zext i1 [[CMP2843]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2845:%.*]] = trunc i32 [[CONV2844]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2845]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1760:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2846:%.*]] = icmp ne i16 [[TMP1760]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2846]], label [[IF_THEN2847:%.*]], label [[IF_END2848:%.*]]
// SIMD-ONLY0:       if.then2847:
// SIMD-ONLY0-NEXT:    [[TMP1761:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1761]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2848]]
// SIMD-ONLY0:       if.end2848:
// SIMD-ONLY0-NEXT:    [[TMP1762:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2849:%.*]] = zext i16 [[TMP1762]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1763:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2850:%.*]] = zext i16 [[TMP1763]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2851:%.*]] = icmp eq i32 [[CONV2849]], [[CONV2850]]
// SIMD-ONLY0-NEXT:    [[CONV2852:%.*]] = zext i1 [[CMP2851]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2853:%.*]] = trunc i32 [[CONV2852]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2853]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1764:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2854:%.*]] = icmp ne i16 [[TMP1764]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2854]], label [[IF_THEN2855:%.*]], label [[IF_END2856:%.*]]
// SIMD-ONLY0:       if.then2855:
// SIMD-ONLY0-NEXT:    [[TMP1765:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1765]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2856]]
// SIMD-ONLY0:       if.end2856:
// SIMD-ONLY0-NEXT:    [[TMP1766:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2857:%.*]] = zext i16 [[TMP1766]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1767:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2858:%.*]] = zext i16 [[TMP1767]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2859:%.*]] = icmp eq i32 [[CONV2857]], [[CONV2858]]
// SIMD-ONLY0-NEXT:    [[CONV2860:%.*]] = zext i1 [[CMP2859]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2861:%.*]] = trunc i32 [[CONV2860]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2861]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1768:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2862:%.*]] = icmp ne i16 [[TMP1768]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2862]], label [[IF_THEN2863:%.*]], label [[IF_ELSE2864:%.*]]
// SIMD-ONLY0:       if.then2863:
// SIMD-ONLY0-NEXT:    [[TMP1769:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1769]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2865:%.*]]
// SIMD-ONLY0:       if.else2864:
// SIMD-ONLY0-NEXT:    [[TMP1770:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1770]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2865]]
// SIMD-ONLY0:       if.end2865:
// SIMD-ONLY0-NEXT:    [[TMP1771:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2866:%.*]] = zext i16 [[TMP1771]] to i32
// SIMD-ONLY0-NEXT:    [[TMP1772:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV2867:%.*]] = zext i16 [[TMP1772]] to i32
// SIMD-ONLY0-NEXT:    [[CMP2868:%.*]] = icmp eq i32 [[CONV2866]], [[CONV2867]]
// SIMD-ONLY0-NEXT:    [[CONV2869:%.*]] = zext i1 [[CMP2868]] to i32
// SIMD-ONLY0-NEXT:    [[CONV2870:%.*]] = trunc i32 [[CONV2869]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV2870]], ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1773:%.*]] = load i16, ptr [[USR]], align 2
// SIMD-ONLY0-NEXT:    [[TOBOOL2871:%.*]] = icmp ne i16 [[TMP1773]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2871]], label [[IF_THEN2872:%.*]], label [[IF_ELSE2873:%.*]]
// SIMD-ONLY0:       if.then2872:
// SIMD-ONLY0-NEXT:    [[TMP1774:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1774]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2874:%.*]]
// SIMD-ONLY0:       if.else2873:
// SIMD-ONLY0-NEXT:    [[TMP1775:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP1775]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    br label [[IF_END2874]]
// SIMD-ONLY0:       if.end2874:
// SIMD-ONLY0-NEXT:    [[TMP1776:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1776]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1777:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1778:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2875:%.*]] = icmp sgt i32 [[TMP1777]], [[TMP1778]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2875]], label [[IF_THEN2877:%.*]], label [[IF_END2878:%.*]]
// SIMD-ONLY0:       if.then2877:
// SIMD-ONLY0-NEXT:    [[TMP1779:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1779]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2878]]
// SIMD-ONLY0:       if.end2878:
// SIMD-ONLY0-NEXT:    [[TMP1780:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1780]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1781:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1782:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2879:%.*]] = icmp sgt i32 [[TMP1781]], [[TMP1782]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2879]], label [[IF_THEN2881:%.*]], label [[IF_END2882:%.*]]
// SIMD-ONLY0:       if.then2881:
// SIMD-ONLY0-NEXT:    [[TMP1783:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1783]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2882]]
// SIMD-ONLY0:       if.end2882:
// SIMD-ONLY0-NEXT:    [[TMP1784:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1784]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1785:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1786:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2883:%.*]] = icmp slt i32 [[TMP1785]], [[TMP1786]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2883]], label [[IF_THEN2885:%.*]], label [[IF_END2886:%.*]]
// SIMD-ONLY0:       if.then2885:
// SIMD-ONLY0-NEXT:    [[TMP1787:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1787]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2886]]
// SIMD-ONLY0:       if.end2886:
// SIMD-ONLY0-NEXT:    [[TMP1788:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1788]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1789:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1790:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2887:%.*]] = icmp slt i32 [[TMP1789]], [[TMP1790]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2887]], label [[IF_THEN2889:%.*]], label [[IF_END2890:%.*]]
// SIMD-ONLY0:       if.then2889:
// SIMD-ONLY0-NEXT:    [[TMP1791:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1791]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2890]]
// SIMD-ONLY0:       if.end2890:
// SIMD-ONLY0-NEXT:    [[TMP1792:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1792]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1793:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1794:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2891:%.*]] = icmp eq i32 [[TMP1793]], [[TMP1794]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2891]], label [[IF_THEN2893:%.*]], label [[IF_END2894:%.*]]
// SIMD-ONLY0:       if.then2893:
// SIMD-ONLY0-NEXT:    [[TMP1795:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1795]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2894]]
// SIMD-ONLY0:       if.end2894:
// SIMD-ONLY0-NEXT:    [[TMP1796:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1796]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1797:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1798:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2895:%.*]] = icmp eq i32 [[TMP1797]], [[TMP1798]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2895]], label [[IF_THEN2897:%.*]], label [[IF_END2898:%.*]]
// SIMD-ONLY0:       if.then2897:
// SIMD-ONLY0-NEXT:    [[TMP1799:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1799]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2898]]
// SIMD-ONLY0:       if.end2898:
// SIMD-ONLY0-NEXT:    [[TMP1800:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1801:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2899:%.*]] = icmp sgt i32 [[TMP1800]], [[TMP1801]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2899]], label [[IF_THEN2901:%.*]], label [[IF_END2902:%.*]]
// SIMD-ONLY0:       if.then2901:
// SIMD-ONLY0-NEXT:    [[TMP1802:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1802]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2902]]
// SIMD-ONLY0:       if.end2902:
// SIMD-ONLY0-NEXT:    [[TMP1803:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1803]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1804:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1805:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2903:%.*]] = icmp sgt i32 [[TMP1804]], [[TMP1805]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2903]], label [[IF_THEN2905:%.*]], label [[IF_END2906:%.*]]
// SIMD-ONLY0:       if.then2905:
// SIMD-ONLY0-NEXT:    [[TMP1806:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1806]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2906]]
// SIMD-ONLY0:       if.end2906:
// SIMD-ONLY0-NEXT:    [[TMP1807:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1807]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1808:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1809:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2907:%.*]] = icmp slt i32 [[TMP1808]], [[TMP1809]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2907]], label [[IF_THEN2909:%.*]], label [[IF_END2910:%.*]]
// SIMD-ONLY0:       if.then2909:
// SIMD-ONLY0-NEXT:    [[TMP1810:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1810]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2910]]
// SIMD-ONLY0:       if.end2910:
// SIMD-ONLY0-NEXT:    [[TMP1811:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1811]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1812:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1813:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2911:%.*]] = icmp slt i32 [[TMP1812]], [[TMP1813]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2911]], label [[IF_THEN2913:%.*]], label [[IF_END2914:%.*]]
// SIMD-ONLY0:       if.then2913:
// SIMD-ONLY0-NEXT:    [[TMP1814:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1814]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2914]]
// SIMD-ONLY0:       if.end2914:
// SIMD-ONLY0-NEXT:    [[TMP1815:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1815]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1816:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1817:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2915:%.*]] = icmp eq i32 [[TMP1816]], [[TMP1817]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2915]], label [[IF_THEN2917:%.*]], label [[IF_END2918:%.*]]
// SIMD-ONLY0:       if.then2917:
// SIMD-ONLY0-NEXT:    [[TMP1818:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1818]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2918]]
// SIMD-ONLY0:       if.end2918:
// SIMD-ONLY0-NEXT:    [[TMP1819:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1819]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1820:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1821:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2919:%.*]] = icmp eq i32 [[TMP1820]], [[TMP1821]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2919]], label [[IF_THEN2921:%.*]], label [[IF_END2922:%.*]]
// SIMD-ONLY0:       if.then2921:
// SIMD-ONLY0-NEXT:    [[TMP1822:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1822]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2922]]
// SIMD-ONLY0:       if.end2922:
// SIMD-ONLY0-NEXT:    [[TMP1823:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1823]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1824:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1825:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2923:%.*]] = icmp eq i32 [[TMP1824]], [[TMP1825]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2923]], label [[IF_THEN2925:%.*]], label [[IF_ELSE2926:%.*]]
// SIMD-ONLY0:       if.then2925:
// SIMD-ONLY0-NEXT:    [[TMP1826:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1826]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2927:%.*]]
// SIMD-ONLY0:       if.else2926:
// SIMD-ONLY0-NEXT:    [[TMP1827:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1827]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2927]]
// SIMD-ONLY0:       if.end2927:
// SIMD-ONLY0-NEXT:    [[TMP1828:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1829:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2928:%.*]] = icmp eq i32 [[TMP1828]], [[TMP1829]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2928]], label [[IF_THEN2930:%.*]], label [[IF_ELSE2931:%.*]]
// SIMD-ONLY0:       if.then2930:
// SIMD-ONLY0-NEXT:    [[TMP1830:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1830]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2932:%.*]]
// SIMD-ONLY0:       if.else2931:
// SIMD-ONLY0-NEXT:    [[TMP1831:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1831]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2932]]
// SIMD-ONLY0:       if.end2932:
// SIMD-ONLY0-NEXT:    [[TMP1832:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1833:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2933:%.*]] = icmp eq i32 [[TMP1832]], [[TMP1833]]
// SIMD-ONLY0-NEXT:    [[CONV2934:%.*]] = zext i1 [[CMP2933]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV2934]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1834:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL2935:%.*]] = icmp ne i32 [[TMP1834]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2935]], label [[IF_THEN2936:%.*]], label [[IF_END2937:%.*]]
// SIMD-ONLY0:       if.then2936:
// SIMD-ONLY0-NEXT:    [[TMP1835:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1835]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2937]]
// SIMD-ONLY0:       if.end2937:
// SIMD-ONLY0-NEXT:    [[TMP1836:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1837:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2938:%.*]] = icmp eq i32 [[TMP1836]], [[TMP1837]]
// SIMD-ONLY0-NEXT:    [[CONV2939:%.*]] = zext i1 [[CMP2938]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV2939]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1838:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL2940:%.*]] = icmp ne i32 [[TMP1838]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2940]], label [[IF_THEN2941:%.*]], label [[IF_END2942:%.*]]
// SIMD-ONLY0:       if.then2941:
// SIMD-ONLY0-NEXT:    [[TMP1839:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1839]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2942]]
// SIMD-ONLY0:       if.end2942:
// SIMD-ONLY0-NEXT:    [[TMP1840:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1841:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2943:%.*]] = icmp eq i32 [[TMP1840]], [[TMP1841]]
// SIMD-ONLY0-NEXT:    [[CONV2944:%.*]] = zext i1 [[CMP2943]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV2944]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1842:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL2945:%.*]] = icmp ne i32 [[TMP1842]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2945]], label [[IF_THEN2946:%.*]], label [[IF_ELSE2947:%.*]]
// SIMD-ONLY0:       if.then2946:
// SIMD-ONLY0-NEXT:    [[TMP1843:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1843]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2948:%.*]]
// SIMD-ONLY0:       if.else2947:
// SIMD-ONLY0-NEXT:    [[TMP1844:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1844]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2948]]
// SIMD-ONLY0:       if.end2948:
// SIMD-ONLY0-NEXT:    [[TMP1845:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1846:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2949:%.*]] = icmp eq i32 [[TMP1845]], [[TMP1846]]
// SIMD-ONLY0-NEXT:    [[CONV2950:%.*]] = zext i1 [[CMP2949]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV2950]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1847:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL2951:%.*]] = icmp ne i32 [[TMP1847]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL2951]], label [[IF_THEN2952:%.*]], label [[IF_ELSE2953:%.*]]
// SIMD-ONLY0:       if.then2952:
// SIMD-ONLY0-NEXT:    [[TMP1848:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1848]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2954:%.*]]
// SIMD-ONLY0:       if.else2953:
// SIMD-ONLY0-NEXT:    [[TMP1849:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1849]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2954]]
// SIMD-ONLY0:       if.end2954:
// SIMD-ONLY0-NEXT:    [[TMP1850:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1850]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1851:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1852:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2955:%.*]] = icmp sgt i32 [[TMP1851]], [[TMP1852]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2955]], label [[IF_THEN2957:%.*]], label [[IF_END2958:%.*]]
// SIMD-ONLY0:       if.then2957:
// SIMD-ONLY0-NEXT:    [[TMP1853:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1853]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2958]]
// SIMD-ONLY0:       if.end2958:
// SIMD-ONLY0-NEXT:    [[TMP1854:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1854]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1855:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1856:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2959:%.*]] = icmp sgt i32 [[TMP1855]], [[TMP1856]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2959]], label [[IF_THEN2961:%.*]], label [[IF_END2962:%.*]]
// SIMD-ONLY0:       if.then2961:
// SIMD-ONLY0-NEXT:    [[TMP1857:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1857]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2962]]
// SIMD-ONLY0:       if.end2962:
// SIMD-ONLY0-NEXT:    [[TMP1858:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1858]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1859:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1860:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2963:%.*]] = icmp slt i32 [[TMP1859]], [[TMP1860]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2963]], label [[IF_THEN2965:%.*]], label [[IF_END2966:%.*]]
// SIMD-ONLY0:       if.then2965:
// SIMD-ONLY0-NEXT:    [[TMP1861:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1861]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2966]]
// SIMD-ONLY0:       if.end2966:
// SIMD-ONLY0-NEXT:    [[TMP1862:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1862]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1863:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1864:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2967:%.*]] = icmp slt i32 [[TMP1863]], [[TMP1864]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2967]], label [[IF_THEN2969:%.*]], label [[IF_END2970:%.*]]
// SIMD-ONLY0:       if.then2969:
// SIMD-ONLY0-NEXT:    [[TMP1865:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1865]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2970]]
// SIMD-ONLY0:       if.end2970:
// SIMD-ONLY0-NEXT:    [[TMP1866:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1866]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1867:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1868:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2971:%.*]] = icmp eq i32 [[TMP1867]], [[TMP1868]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2971]], label [[IF_THEN2973:%.*]], label [[IF_END2974:%.*]]
// SIMD-ONLY0:       if.then2973:
// SIMD-ONLY0-NEXT:    [[TMP1869:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1869]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2974]]
// SIMD-ONLY0:       if.end2974:
// SIMD-ONLY0-NEXT:    [[TMP1870:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1870]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1871:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1872:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2975:%.*]] = icmp eq i32 [[TMP1871]], [[TMP1872]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2975]], label [[IF_THEN2977:%.*]], label [[IF_END2978:%.*]]
// SIMD-ONLY0:       if.then2977:
// SIMD-ONLY0-NEXT:    [[TMP1873:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1873]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2978]]
// SIMD-ONLY0:       if.end2978:
// SIMD-ONLY0-NEXT:    [[TMP1874:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1875:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2979:%.*]] = icmp sgt i32 [[TMP1874]], [[TMP1875]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2979]], label [[IF_THEN2981:%.*]], label [[IF_END2982:%.*]]
// SIMD-ONLY0:       if.then2981:
// SIMD-ONLY0-NEXT:    [[TMP1876:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1876]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2982]]
// SIMD-ONLY0:       if.end2982:
// SIMD-ONLY0-NEXT:    [[TMP1877:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1877]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1878:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1879:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2983:%.*]] = icmp sgt i32 [[TMP1878]], [[TMP1879]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2983]], label [[IF_THEN2985:%.*]], label [[IF_END2986:%.*]]
// SIMD-ONLY0:       if.then2985:
// SIMD-ONLY0-NEXT:    [[TMP1880:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1880]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2986]]
// SIMD-ONLY0:       if.end2986:
// SIMD-ONLY0-NEXT:    [[TMP1881:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1881]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1882:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1883:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2987:%.*]] = icmp slt i32 [[TMP1882]], [[TMP1883]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2987]], label [[IF_THEN2989:%.*]], label [[IF_END2990:%.*]]
// SIMD-ONLY0:       if.then2989:
// SIMD-ONLY0-NEXT:    [[TMP1884:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1884]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2990]]
// SIMD-ONLY0:       if.end2990:
// SIMD-ONLY0-NEXT:    [[TMP1885:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1885]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1886:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1887:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2991:%.*]] = icmp slt i32 [[TMP1886]], [[TMP1887]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2991]], label [[IF_THEN2993:%.*]], label [[IF_END2994:%.*]]
// SIMD-ONLY0:       if.then2993:
// SIMD-ONLY0-NEXT:    [[TMP1888:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1888]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2994]]
// SIMD-ONLY0:       if.end2994:
// SIMD-ONLY0-NEXT:    [[TMP1889:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1889]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1890:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1891:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2995:%.*]] = icmp eq i32 [[TMP1890]], [[TMP1891]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2995]], label [[IF_THEN2997:%.*]], label [[IF_END2998:%.*]]
// SIMD-ONLY0:       if.then2997:
// SIMD-ONLY0-NEXT:    [[TMP1892:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1892]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END2998]]
// SIMD-ONLY0:       if.end2998:
// SIMD-ONLY0-NEXT:    [[TMP1893:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1893]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1894:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1895:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP2999:%.*]] = icmp eq i32 [[TMP1894]], [[TMP1895]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP2999]], label [[IF_THEN3001:%.*]], label [[IF_END3002:%.*]]
// SIMD-ONLY0:       if.then3001:
// SIMD-ONLY0-NEXT:    [[TMP1896:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1896]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3002]]
// SIMD-ONLY0:       if.end3002:
// SIMD-ONLY0-NEXT:    [[TMP1897:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1897]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1898:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1899:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3003:%.*]] = icmp eq i32 [[TMP1898]], [[TMP1899]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3003]], label [[IF_THEN3005:%.*]], label [[IF_ELSE3006:%.*]]
// SIMD-ONLY0:       if.then3005:
// SIMD-ONLY0-NEXT:    [[TMP1900:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1900]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3007:%.*]]
// SIMD-ONLY0:       if.else3006:
// SIMD-ONLY0-NEXT:    [[TMP1901:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1901]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3007]]
// SIMD-ONLY0:       if.end3007:
// SIMD-ONLY0-NEXT:    [[TMP1902:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1903:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3008:%.*]] = icmp eq i32 [[TMP1902]], [[TMP1903]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3008]], label [[IF_THEN3010:%.*]], label [[IF_ELSE3011:%.*]]
// SIMD-ONLY0:       if.then3010:
// SIMD-ONLY0-NEXT:    [[TMP1904:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1904]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3012:%.*]]
// SIMD-ONLY0:       if.else3011:
// SIMD-ONLY0-NEXT:    [[TMP1905:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1905]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3012]]
// SIMD-ONLY0:       if.end3012:
// SIMD-ONLY0-NEXT:    [[TMP1906:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1907:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3013:%.*]] = icmp eq i32 [[TMP1906]], [[TMP1907]]
// SIMD-ONLY0-NEXT:    [[CONV3014:%.*]] = zext i1 [[CMP3013]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3014]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1908:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3015:%.*]] = icmp ne i32 [[TMP1908]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3015]], label [[IF_THEN3016:%.*]], label [[IF_END3017:%.*]]
// SIMD-ONLY0:       if.then3016:
// SIMD-ONLY0-NEXT:    [[TMP1909:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1909]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3017]]
// SIMD-ONLY0:       if.end3017:
// SIMD-ONLY0-NEXT:    [[TMP1910:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1911:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3018:%.*]] = icmp eq i32 [[TMP1910]], [[TMP1911]]
// SIMD-ONLY0-NEXT:    [[CONV3019:%.*]] = zext i1 [[CMP3018]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3019]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1912:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3020:%.*]] = icmp ne i32 [[TMP1912]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3020]], label [[IF_THEN3021:%.*]], label [[IF_END3022:%.*]]
// SIMD-ONLY0:       if.then3021:
// SIMD-ONLY0-NEXT:    [[TMP1913:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1913]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3022]]
// SIMD-ONLY0:       if.end3022:
// SIMD-ONLY0-NEXT:    [[TMP1914:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1915:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3023:%.*]] = icmp eq i32 [[TMP1914]], [[TMP1915]]
// SIMD-ONLY0-NEXT:    [[CONV3024:%.*]] = zext i1 [[CMP3023]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3024]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1916:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3025:%.*]] = icmp ne i32 [[TMP1916]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3025]], label [[IF_THEN3026:%.*]], label [[IF_ELSE3027:%.*]]
// SIMD-ONLY0:       if.then3026:
// SIMD-ONLY0-NEXT:    [[TMP1917:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1917]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3028:%.*]]
// SIMD-ONLY0:       if.else3027:
// SIMD-ONLY0-NEXT:    [[TMP1918:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1918]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3028]]
// SIMD-ONLY0:       if.end3028:
// SIMD-ONLY0-NEXT:    [[TMP1919:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1920:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3029:%.*]] = icmp eq i32 [[TMP1919]], [[TMP1920]]
// SIMD-ONLY0-NEXT:    [[CONV3030:%.*]] = zext i1 [[CMP3029]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3030]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1921:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3031:%.*]] = icmp ne i32 [[TMP1921]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3031]], label [[IF_THEN3032:%.*]], label [[IF_ELSE3033:%.*]]
// SIMD-ONLY0:       if.then3032:
// SIMD-ONLY0-NEXT:    [[TMP1922:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1922]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3034:%.*]]
// SIMD-ONLY0:       if.else3033:
// SIMD-ONLY0-NEXT:    [[TMP1923:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1923]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3034]]
// SIMD-ONLY0:       if.end3034:
// SIMD-ONLY0-NEXT:    [[TMP1924:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1924]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1925:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1926:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3035:%.*]] = icmp sgt i32 [[TMP1925]], [[TMP1926]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3035]], label [[IF_THEN3037:%.*]], label [[IF_END3038:%.*]]
// SIMD-ONLY0:       if.then3037:
// SIMD-ONLY0-NEXT:    [[TMP1927:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1927]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3038]]
// SIMD-ONLY0:       if.end3038:
// SIMD-ONLY0-NEXT:    [[TMP1928:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1928]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1929:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1930:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3039:%.*]] = icmp sgt i32 [[TMP1929]], [[TMP1930]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3039]], label [[IF_THEN3041:%.*]], label [[IF_END3042:%.*]]
// SIMD-ONLY0:       if.then3041:
// SIMD-ONLY0-NEXT:    [[TMP1931:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1931]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3042]]
// SIMD-ONLY0:       if.end3042:
// SIMD-ONLY0-NEXT:    [[TMP1932:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1932]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1933:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1934:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3043:%.*]] = icmp slt i32 [[TMP1933]], [[TMP1934]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3043]], label [[IF_THEN3045:%.*]], label [[IF_END3046:%.*]]
// SIMD-ONLY0:       if.then3045:
// SIMD-ONLY0-NEXT:    [[TMP1935:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1935]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3046]]
// SIMD-ONLY0:       if.end3046:
// SIMD-ONLY0-NEXT:    [[TMP1936:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1936]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1937:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1938:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3047:%.*]] = icmp slt i32 [[TMP1937]], [[TMP1938]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3047]], label [[IF_THEN3049:%.*]], label [[IF_END3050:%.*]]
// SIMD-ONLY0:       if.then3049:
// SIMD-ONLY0-NEXT:    [[TMP1939:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1939]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3050]]
// SIMD-ONLY0:       if.end3050:
// SIMD-ONLY0-NEXT:    [[TMP1940:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1940]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1941:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1942:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3051:%.*]] = icmp eq i32 [[TMP1941]], [[TMP1942]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3051]], label [[IF_THEN3053:%.*]], label [[IF_END3054:%.*]]
// SIMD-ONLY0:       if.then3053:
// SIMD-ONLY0-NEXT:    [[TMP1943:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1943]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3054]]
// SIMD-ONLY0:       if.end3054:
// SIMD-ONLY0-NEXT:    [[TMP1944:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1944]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1945:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1946:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3055:%.*]] = icmp eq i32 [[TMP1945]], [[TMP1946]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3055]], label [[IF_THEN3057:%.*]], label [[IF_END3058:%.*]]
// SIMD-ONLY0:       if.then3057:
// SIMD-ONLY0-NEXT:    [[TMP1947:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1947]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3058]]
// SIMD-ONLY0:       if.end3058:
// SIMD-ONLY0-NEXT:    [[TMP1948:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1949:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3059:%.*]] = icmp sgt i32 [[TMP1948]], [[TMP1949]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3059]], label [[IF_THEN3061:%.*]], label [[IF_END3062:%.*]]
// SIMD-ONLY0:       if.then3061:
// SIMD-ONLY0-NEXT:    [[TMP1950:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1950]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3062]]
// SIMD-ONLY0:       if.end3062:
// SIMD-ONLY0-NEXT:    [[TMP1951:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1951]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1952:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1953:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3063:%.*]] = icmp sgt i32 [[TMP1952]], [[TMP1953]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3063]], label [[IF_THEN3065:%.*]], label [[IF_END3066:%.*]]
// SIMD-ONLY0:       if.then3065:
// SIMD-ONLY0-NEXT:    [[TMP1954:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1954]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3066]]
// SIMD-ONLY0:       if.end3066:
// SIMD-ONLY0-NEXT:    [[TMP1955:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1955]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1956:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1957:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3067:%.*]] = icmp slt i32 [[TMP1956]], [[TMP1957]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3067]], label [[IF_THEN3069:%.*]], label [[IF_END3070:%.*]]
// SIMD-ONLY0:       if.then3069:
// SIMD-ONLY0-NEXT:    [[TMP1958:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1958]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3070]]
// SIMD-ONLY0:       if.end3070:
// SIMD-ONLY0-NEXT:    [[TMP1959:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1959]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1960:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1961:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3071:%.*]] = icmp slt i32 [[TMP1960]], [[TMP1961]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3071]], label [[IF_THEN3073:%.*]], label [[IF_END3074:%.*]]
// SIMD-ONLY0:       if.then3073:
// SIMD-ONLY0-NEXT:    [[TMP1962:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1962]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3074]]
// SIMD-ONLY0:       if.end3074:
// SIMD-ONLY0-NEXT:    [[TMP1963:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1963]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1964:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1965:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3075:%.*]] = icmp eq i32 [[TMP1964]], [[TMP1965]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3075]], label [[IF_THEN3077:%.*]], label [[IF_END3078:%.*]]
// SIMD-ONLY0:       if.then3077:
// SIMD-ONLY0-NEXT:    [[TMP1966:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1966]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3078]]
// SIMD-ONLY0:       if.end3078:
// SIMD-ONLY0-NEXT:    [[TMP1967:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1967]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1968:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1969:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3079:%.*]] = icmp eq i32 [[TMP1968]], [[TMP1969]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3079]], label [[IF_THEN3081:%.*]], label [[IF_END3082:%.*]]
// SIMD-ONLY0:       if.then3081:
// SIMD-ONLY0-NEXT:    [[TMP1970:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1970]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3082]]
// SIMD-ONLY0:       if.end3082:
// SIMD-ONLY0-NEXT:    [[TMP1971:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1971]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1972:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1973:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3083:%.*]] = icmp eq i32 [[TMP1972]], [[TMP1973]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3083]], label [[IF_THEN3085:%.*]], label [[IF_ELSE3086:%.*]]
// SIMD-ONLY0:       if.then3085:
// SIMD-ONLY0-NEXT:    [[TMP1974:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1974]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3087:%.*]]
// SIMD-ONLY0:       if.else3086:
// SIMD-ONLY0-NEXT:    [[TMP1975:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1975]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3087]]
// SIMD-ONLY0:       if.end3087:
// SIMD-ONLY0-NEXT:    [[TMP1976:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1977:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3088:%.*]] = icmp eq i32 [[TMP1976]], [[TMP1977]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3088]], label [[IF_THEN3090:%.*]], label [[IF_ELSE3091:%.*]]
// SIMD-ONLY0:       if.then3090:
// SIMD-ONLY0-NEXT:    [[TMP1978:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1978]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3092:%.*]]
// SIMD-ONLY0:       if.else3091:
// SIMD-ONLY0-NEXT:    [[TMP1979:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1979]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3092]]
// SIMD-ONLY0:       if.end3092:
// SIMD-ONLY0-NEXT:    [[TMP1980:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1981:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3093:%.*]] = icmp eq i32 [[TMP1980]], [[TMP1981]]
// SIMD-ONLY0-NEXT:    [[CONV3094:%.*]] = zext i1 [[CMP3093]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3094]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1982:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3095:%.*]] = icmp ne i32 [[TMP1982]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3095]], label [[IF_THEN3096:%.*]], label [[IF_END3097:%.*]]
// SIMD-ONLY0:       if.then3096:
// SIMD-ONLY0-NEXT:    [[TMP1983:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1983]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3097]]
// SIMD-ONLY0:       if.end3097:
// SIMD-ONLY0-NEXT:    [[TMP1984:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1985:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3098:%.*]] = icmp eq i32 [[TMP1984]], [[TMP1985]]
// SIMD-ONLY0-NEXT:    [[CONV3099:%.*]] = zext i1 [[CMP3098]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3099]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1986:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3100:%.*]] = icmp ne i32 [[TMP1986]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3100]], label [[IF_THEN3101:%.*]], label [[IF_END3102:%.*]]
// SIMD-ONLY0:       if.then3101:
// SIMD-ONLY0-NEXT:    [[TMP1987:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1987]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3102]]
// SIMD-ONLY0:       if.end3102:
// SIMD-ONLY0-NEXT:    [[TMP1988:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1989:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3103:%.*]] = icmp eq i32 [[TMP1988]], [[TMP1989]]
// SIMD-ONLY0-NEXT:    [[CONV3104:%.*]] = zext i1 [[CMP3103]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3104]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1990:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3105:%.*]] = icmp ne i32 [[TMP1990]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3105]], label [[IF_THEN3106:%.*]], label [[IF_ELSE3107:%.*]]
// SIMD-ONLY0:       if.then3106:
// SIMD-ONLY0-NEXT:    [[TMP1991:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1991]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3108:%.*]]
// SIMD-ONLY0:       if.else3107:
// SIMD-ONLY0-NEXT:    [[TMP1992:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1992]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3108]]
// SIMD-ONLY0:       if.end3108:
// SIMD-ONLY0-NEXT:    [[TMP1993:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1994:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3109:%.*]] = icmp eq i32 [[TMP1993]], [[TMP1994]]
// SIMD-ONLY0-NEXT:    [[CONV3110:%.*]] = zext i1 [[CMP3109]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3110]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1995:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3111:%.*]] = icmp ne i32 [[TMP1995]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3111]], label [[IF_THEN3112:%.*]], label [[IF_ELSE3113:%.*]]
// SIMD-ONLY0:       if.then3112:
// SIMD-ONLY0-NEXT:    [[TMP1996:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1996]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3114:%.*]]
// SIMD-ONLY0:       if.else3113:
// SIMD-ONLY0-NEXT:    [[TMP1997:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1997]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3114]]
// SIMD-ONLY0:       if.end3114:
// SIMD-ONLY0-NEXT:    [[TMP1998:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP1998]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1999:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2000:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3115:%.*]] = icmp sgt i32 [[TMP1999]], [[TMP2000]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3115]], label [[IF_THEN3117:%.*]], label [[IF_END3118:%.*]]
// SIMD-ONLY0:       if.then3117:
// SIMD-ONLY0-NEXT:    [[TMP2001:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2001]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3118]]
// SIMD-ONLY0:       if.end3118:
// SIMD-ONLY0-NEXT:    [[TMP2002:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2002]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2003:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2004:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3119:%.*]] = icmp sgt i32 [[TMP2003]], [[TMP2004]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3119]], label [[IF_THEN3121:%.*]], label [[IF_END3122:%.*]]
// SIMD-ONLY0:       if.then3121:
// SIMD-ONLY0-NEXT:    [[TMP2005:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2005]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3122]]
// SIMD-ONLY0:       if.end3122:
// SIMD-ONLY0-NEXT:    [[TMP2006:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2006]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2007:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2008:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3123:%.*]] = icmp slt i32 [[TMP2007]], [[TMP2008]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3123]], label [[IF_THEN3125:%.*]], label [[IF_END3126:%.*]]
// SIMD-ONLY0:       if.then3125:
// SIMD-ONLY0-NEXT:    [[TMP2009:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2009]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3126]]
// SIMD-ONLY0:       if.end3126:
// SIMD-ONLY0-NEXT:    [[TMP2010:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2010]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2011:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2012:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3127:%.*]] = icmp slt i32 [[TMP2011]], [[TMP2012]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3127]], label [[IF_THEN3129:%.*]], label [[IF_END3130:%.*]]
// SIMD-ONLY0:       if.then3129:
// SIMD-ONLY0-NEXT:    [[TMP2013:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2013]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3130]]
// SIMD-ONLY0:       if.end3130:
// SIMD-ONLY0-NEXT:    [[TMP2014:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2014]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2015:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2016:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3131:%.*]] = icmp eq i32 [[TMP2015]], [[TMP2016]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3131]], label [[IF_THEN3133:%.*]], label [[IF_END3134:%.*]]
// SIMD-ONLY0:       if.then3133:
// SIMD-ONLY0-NEXT:    [[TMP2017:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2017]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3134]]
// SIMD-ONLY0:       if.end3134:
// SIMD-ONLY0-NEXT:    [[TMP2018:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2018]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2019:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2020:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3135:%.*]] = icmp eq i32 [[TMP2019]], [[TMP2020]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3135]], label [[IF_THEN3137:%.*]], label [[IF_END3138:%.*]]
// SIMD-ONLY0:       if.then3137:
// SIMD-ONLY0-NEXT:    [[TMP2021:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2021]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3138]]
// SIMD-ONLY0:       if.end3138:
// SIMD-ONLY0-NEXT:    [[TMP2022:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2023:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3139:%.*]] = icmp sgt i32 [[TMP2022]], [[TMP2023]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3139]], label [[IF_THEN3141:%.*]], label [[IF_END3142:%.*]]
// SIMD-ONLY0:       if.then3141:
// SIMD-ONLY0-NEXT:    [[TMP2024:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2024]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3142]]
// SIMD-ONLY0:       if.end3142:
// SIMD-ONLY0-NEXT:    [[TMP2025:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2025]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2026:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2027:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3143:%.*]] = icmp sgt i32 [[TMP2026]], [[TMP2027]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3143]], label [[IF_THEN3145:%.*]], label [[IF_END3146:%.*]]
// SIMD-ONLY0:       if.then3145:
// SIMD-ONLY0-NEXT:    [[TMP2028:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2028]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3146]]
// SIMD-ONLY0:       if.end3146:
// SIMD-ONLY0-NEXT:    [[TMP2029:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2029]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2030:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2031:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3147:%.*]] = icmp slt i32 [[TMP2030]], [[TMP2031]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3147]], label [[IF_THEN3149:%.*]], label [[IF_END3150:%.*]]
// SIMD-ONLY0:       if.then3149:
// SIMD-ONLY0-NEXT:    [[TMP2032:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2032]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3150]]
// SIMD-ONLY0:       if.end3150:
// SIMD-ONLY0-NEXT:    [[TMP2033:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2033]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2034:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2035:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3151:%.*]] = icmp slt i32 [[TMP2034]], [[TMP2035]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3151]], label [[IF_THEN3153:%.*]], label [[IF_END3154:%.*]]
// SIMD-ONLY0:       if.then3153:
// SIMD-ONLY0-NEXT:    [[TMP2036:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2036]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3154]]
// SIMD-ONLY0:       if.end3154:
// SIMD-ONLY0-NEXT:    [[TMP2037:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2037]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2038:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2039:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3155:%.*]] = icmp eq i32 [[TMP2038]], [[TMP2039]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3155]], label [[IF_THEN3157:%.*]], label [[IF_END3158:%.*]]
// SIMD-ONLY0:       if.then3157:
// SIMD-ONLY0-NEXT:    [[TMP2040:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2040]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3158]]
// SIMD-ONLY0:       if.end3158:
// SIMD-ONLY0-NEXT:    [[TMP2041:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2041]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2042:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2043:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3159:%.*]] = icmp eq i32 [[TMP2042]], [[TMP2043]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3159]], label [[IF_THEN3161:%.*]], label [[IF_END3162:%.*]]
// SIMD-ONLY0:       if.then3161:
// SIMD-ONLY0-NEXT:    [[TMP2044:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2044]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3162]]
// SIMD-ONLY0:       if.end3162:
// SIMD-ONLY0-NEXT:    [[TMP2045:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2045]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2046:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2047:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3163:%.*]] = icmp eq i32 [[TMP2046]], [[TMP2047]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3163]], label [[IF_THEN3165:%.*]], label [[IF_ELSE3166:%.*]]
// SIMD-ONLY0:       if.then3165:
// SIMD-ONLY0-NEXT:    [[TMP2048:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2048]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3167:%.*]]
// SIMD-ONLY0:       if.else3166:
// SIMD-ONLY0-NEXT:    [[TMP2049:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2049]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3167]]
// SIMD-ONLY0:       if.end3167:
// SIMD-ONLY0-NEXT:    [[TMP2050:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2051:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3168:%.*]] = icmp eq i32 [[TMP2050]], [[TMP2051]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3168]], label [[IF_THEN3170:%.*]], label [[IF_ELSE3171:%.*]]
// SIMD-ONLY0:       if.then3170:
// SIMD-ONLY0-NEXT:    [[TMP2052:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2052]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3172:%.*]]
// SIMD-ONLY0:       if.else3171:
// SIMD-ONLY0-NEXT:    [[TMP2053:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2053]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3172]]
// SIMD-ONLY0:       if.end3172:
// SIMD-ONLY0-NEXT:    [[TMP2054:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2055:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3173:%.*]] = icmp eq i32 [[TMP2054]], [[TMP2055]]
// SIMD-ONLY0-NEXT:    [[CONV3174:%.*]] = zext i1 [[CMP3173]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3174]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2056:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3175:%.*]] = icmp ne i32 [[TMP2056]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3175]], label [[IF_THEN3176:%.*]], label [[IF_END3177:%.*]]
// SIMD-ONLY0:       if.then3176:
// SIMD-ONLY0-NEXT:    [[TMP2057:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2057]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3177]]
// SIMD-ONLY0:       if.end3177:
// SIMD-ONLY0-NEXT:    [[TMP2058:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2059:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3178:%.*]] = icmp eq i32 [[TMP2058]], [[TMP2059]]
// SIMD-ONLY0-NEXT:    [[CONV3179:%.*]] = zext i1 [[CMP3178]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3179]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2060:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3180:%.*]] = icmp ne i32 [[TMP2060]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3180]], label [[IF_THEN3181:%.*]], label [[IF_END3182:%.*]]
// SIMD-ONLY0:       if.then3181:
// SIMD-ONLY0-NEXT:    [[TMP2061:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2061]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3182]]
// SIMD-ONLY0:       if.end3182:
// SIMD-ONLY0-NEXT:    [[TMP2062:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2063:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3183:%.*]] = icmp eq i32 [[TMP2062]], [[TMP2063]]
// SIMD-ONLY0-NEXT:    [[CONV3184:%.*]] = zext i1 [[CMP3183]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3184]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2064:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3185:%.*]] = icmp ne i32 [[TMP2064]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3185]], label [[IF_THEN3186:%.*]], label [[IF_ELSE3187:%.*]]
// SIMD-ONLY0:       if.then3186:
// SIMD-ONLY0-NEXT:    [[TMP2065:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2065]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3188:%.*]]
// SIMD-ONLY0:       if.else3187:
// SIMD-ONLY0-NEXT:    [[TMP2066:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2066]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3188]]
// SIMD-ONLY0:       if.end3188:
// SIMD-ONLY0-NEXT:    [[TMP2067:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2068:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3189:%.*]] = icmp eq i32 [[TMP2067]], [[TMP2068]]
// SIMD-ONLY0-NEXT:    [[CONV3190:%.*]] = zext i1 [[CMP3189]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3190]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2069:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3191:%.*]] = icmp ne i32 [[TMP2069]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3191]], label [[IF_THEN3192:%.*]], label [[IF_ELSE3193:%.*]]
// SIMD-ONLY0:       if.then3192:
// SIMD-ONLY0-NEXT:    [[TMP2070:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2070]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3194:%.*]]
// SIMD-ONLY0:       if.else3193:
// SIMD-ONLY0-NEXT:    [[TMP2071:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2071]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3194]]
// SIMD-ONLY0:       if.end3194:
// SIMD-ONLY0-NEXT:    [[TMP2072:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2072]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2073:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2074:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3195:%.*]] = icmp sgt i32 [[TMP2073]], [[TMP2074]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3195]], label [[IF_THEN3197:%.*]], label [[IF_END3198:%.*]]
// SIMD-ONLY0:       if.then3197:
// SIMD-ONLY0-NEXT:    [[TMP2075:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2075]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3198]]
// SIMD-ONLY0:       if.end3198:
// SIMD-ONLY0-NEXT:    [[TMP2076:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2076]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2077:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2078:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3199:%.*]] = icmp sgt i32 [[TMP2077]], [[TMP2078]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3199]], label [[IF_THEN3201:%.*]], label [[IF_END3202:%.*]]
// SIMD-ONLY0:       if.then3201:
// SIMD-ONLY0-NEXT:    [[TMP2079:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2079]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3202]]
// SIMD-ONLY0:       if.end3202:
// SIMD-ONLY0-NEXT:    [[TMP2080:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2080]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2081:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2082:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3203:%.*]] = icmp slt i32 [[TMP2081]], [[TMP2082]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3203]], label [[IF_THEN3205:%.*]], label [[IF_END3206:%.*]]
// SIMD-ONLY0:       if.then3205:
// SIMD-ONLY0-NEXT:    [[TMP2083:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2083]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3206]]
// SIMD-ONLY0:       if.end3206:
// SIMD-ONLY0-NEXT:    [[TMP2084:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2084]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2085:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2086:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3207:%.*]] = icmp slt i32 [[TMP2085]], [[TMP2086]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3207]], label [[IF_THEN3209:%.*]], label [[IF_END3210:%.*]]
// SIMD-ONLY0:       if.then3209:
// SIMD-ONLY0-NEXT:    [[TMP2087:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2087]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3210]]
// SIMD-ONLY0:       if.end3210:
// SIMD-ONLY0-NEXT:    [[TMP2088:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2088]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2089:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2090:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3211:%.*]] = icmp eq i32 [[TMP2089]], [[TMP2090]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3211]], label [[IF_THEN3213:%.*]], label [[IF_END3214:%.*]]
// SIMD-ONLY0:       if.then3213:
// SIMD-ONLY0-NEXT:    [[TMP2091:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2091]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3214]]
// SIMD-ONLY0:       if.end3214:
// SIMD-ONLY0-NEXT:    [[TMP2092:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2092]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2093:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2094:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3215:%.*]] = icmp eq i32 [[TMP2093]], [[TMP2094]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3215]], label [[IF_THEN3217:%.*]], label [[IF_END3218:%.*]]
// SIMD-ONLY0:       if.then3217:
// SIMD-ONLY0-NEXT:    [[TMP2095:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2095]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3218]]
// SIMD-ONLY0:       if.end3218:
// SIMD-ONLY0-NEXT:    [[TMP2096:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2097:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3219:%.*]] = icmp sgt i32 [[TMP2096]], [[TMP2097]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3219]], label [[IF_THEN3221:%.*]], label [[IF_END3222:%.*]]
// SIMD-ONLY0:       if.then3221:
// SIMD-ONLY0-NEXT:    [[TMP2098:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2098]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3222]]
// SIMD-ONLY0:       if.end3222:
// SIMD-ONLY0-NEXT:    [[TMP2099:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2099]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2100:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2101:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3223:%.*]] = icmp sgt i32 [[TMP2100]], [[TMP2101]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3223]], label [[IF_THEN3225:%.*]], label [[IF_END3226:%.*]]
// SIMD-ONLY0:       if.then3225:
// SIMD-ONLY0-NEXT:    [[TMP2102:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2102]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3226]]
// SIMD-ONLY0:       if.end3226:
// SIMD-ONLY0-NEXT:    [[TMP2103:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2103]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2104:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2105:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3227:%.*]] = icmp slt i32 [[TMP2104]], [[TMP2105]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3227]], label [[IF_THEN3229:%.*]], label [[IF_END3230:%.*]]
// SIMD-ONLY0:       if.then3229:
// SIMD-ONLY0-NEXT:    [[TMP2106:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2106]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3230]]
// SIMD-ONLY0:       if.end3230:
// SIMD-ONLY0-NEXT:    [[TMP2107:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2107]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2108:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2109:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3231:%.*]] = icmp slt i32 [[TMP2108]], [[TMP2109]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3231]], label [[IF_THEN3233:%.*]], label [[IF_END3234:%.*]]
// SIMD-ONLY0:       if.then3233:
// SIMD-ONLY0-NEXT:    [[TMP2110:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2110]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3234]]
// SIMD-ONLY0:       if.end3234:
// SIMD-ONLY0-NEXT:    [[TMP2111:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2111]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2112:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2113:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3235:%.*]] = icmp eq i32 [[TMP2112]], [[TMP2113]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3235]], label [[IF_THEN3237:%.*]], label [[IF_END3238:%.*]]
// SIMD-ONLY0:       if.then3237:
// SIMD-ONLY0-NEXT:    [[TMP2114:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2114]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3238]]
// SIMD-ONLY0:       if.end3238:
// SIMD-ONLY0-NEXT:    [[TMP2115:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2115]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2116:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2117:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3239:%.*]] = icmp eq i32 [[TMP2116]], [[TMP2117]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3239]], label [[IF_THEN3241:%.*]], label [[IF_END3242:%.*]]
// SIMD-ONLY0:       if.then3241:
// SIMD-ONLY0-NEXT:    [[TMP2118:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2118]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3242]]
// SIMD-ONLY0:       if.end3242:
// SIMD-ONLY0-NEXT:    [[TMP2119:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2119]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2120:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2121:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3243:%.*]] = icmp eq i32 [[TMP2120]], [[TMP2121]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3243]], label [[IF_THEN3245:%.*]], label [[IF_ELSE3246:%.*]]
// SIMD-ONLY0:       if.then3245:
// SIMD-ONLY0-NEXT:    [[TMP2122:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2122]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3247:%.*]]
// SIMD-ONLY0:       if.else3246:
// SIMD-ONLY0-NEXT:    [[TMP2123:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2123]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3247]]
// SIMD-ONLY0:       if.end3247:
// SIMD-ONLY0-NEXT:    [[TMP2124:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2125:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3248:%.*]] = icmp eq i32 [[TMP2124]], [[TMP2125]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3248]], label [[IF_THEN3250:%.*]], label [[IF_ELSE3251:%.*]]
// SIMD-ONLY0:       if.then3250:
// SIMD-ONLY0-NEXT:    [[TMP2126:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2126]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3252:%.*]]
// SIMD-ONLY0:       if.else3251:
// SIMD-ONLY0-NEXT:    [[TMP2127:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2127]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3252]]
// SIMD-ONLY0:       if.end3252:
// SIMD-ONLY0-NEXT:    [[TMP2128:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2129:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3253:%.*]] = icmp eq i32 [[TMP2128]], [[TMP2129]]
// SIMD-ONLY0-NEXT:    [[CONV3254:%.*]] = zext i1 [[CMP3253]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3254]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2130:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3255:%.*]] = icmp ne i32 [[TMP2130]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3255]], label [[IF_THEN3256:%.*]], label [[IF_END3257:%.*]]
// SIMD-ONLY0:       if.then3256:
// SIMD-ONLY0-NEXT:    [[TMP2131:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2131]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3257]]
// SIMD-ONLY0:       if.end3257:
// SIMD-ONLY0-NEXT:    [[TMP2132:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2133:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3258:%.*]] = icmp eq i32 [[TMP2132]], [[TMP2133]]
// SIMD-ONLY0-NEXT:    [[CONV3259:%.*]] = zext i1 [[CMP3258]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3259]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2134:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3260:%.*]] = icmp ne i32 [[TMP2134]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3260]], label [[IF_THEN3261:%.*]], label [[IF_END3262:%.*]]
// SIMD-ONLY0:       if.then3261:
// SIMD-ONLY0-NEXT:    [[TMP2135:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2135]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3262]]
// SIMD-ONLY0:       if.end3262:
// SIMD-ONLY0-NEXT:    [[TMP2136:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2137:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3263:%.*]] = icmp eq i32 [[TMP2136]], [[TMP2137]]
// SIMD-ONLY0-NEXT:    [[CONV3264:%.*]] = zext i1 [[CMP3263]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3264]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2138:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3265:%.*]] = icmp ne i32 [[TMP2138]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3265]], label [[IF_THEN3266:%.*]], label [[IF_ELSE3267:%.*]]
// SIMD-ONLY0:       if.then3266:
// SIMD-ONLY0-NEXT:    [[TMP2139:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2139]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3268:%.*]]
// SIMD-ONLY0:       if.else3267:
// SIMD-ONLY0-NEXT:    [[TMP2140:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2140]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3268]]
// SIMD-ONLY0:       if.end3268:
// SIMD-ONLY0-NEXT:    [[TMP2141:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2142:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3269:%.*]] = icmp eq i32 [[TMP2141]], [[TMP2142]]
// SIMD-ONLY0-NEXT:    [[CONV3270:%.*]] = zext i1 [[CMP3269]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3270]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2143:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3271:%.*]] = icmp ne i32 [[TMP2143]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3271]], label [[IF_THEN3272:%.*]], label [[IF_ELSE3273:%.*]]
// SIMD-ONLY0:       if.then3272:
// SIMD-ONLY0-NEXT:    [[TMP2144:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2144]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3274:%.*]]
// SIMD-ONLY0:       if.else3273:
// SIMD-ONLY0-NEXT:    [[TMP2145:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2145]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3274]]
// SIMD-ONLY0:       if.end3274:
// SIMD-ONLY0-NEXT:    [[TMP2146:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2146]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2147:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2148:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3275:%.*]] = icmp sgt i32 [[TMP2147]], [[TMP2148]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3275]], label [[IF_THEN3277:%.*]], label [[IF_END3278:%.*]]
// SIMD-ONLY0:       if.then3277:
// SIMD-ONLY0-NEXT:    [[TMP2149:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2149]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3278]]
// SIMD-ONLY0:       if.end3278:
// SIMD-ONLY0-NEXT:    [[TMP2150:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2150]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2151:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2152:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3279:%.*]] = icmp sgt i32 [[TMP2151]], [[TMP2152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3279]], label [[IF_THEN3281:%.*]], label [[IF_END3282:%.*]]
// SIMD-ONLY0:       if.then3281:
// SIMD-ONLY0-NEXT:    [[TMP2153:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2153]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3282]]
// SIMD-ONLY0:       if.end3282:
// SIMD-ONLY0-NEXT:    [[TMP2154:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2154]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2155:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2156:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3283:%.*]] = icmp slt i32 [[TMP2155]], [[TMP2156]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3283]], label [[IF_THEN3285:%.*]], label [[IF_END3286:%.*]]
// SIMD-ONLY0:       if.then3285:
// SIMD-ONLY0-NEXT:    [[TMP2157:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2157]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3286]]
// SIMD-ONLY0:       if.end3286:
// SIMD-ONLY0-NEXT:    [[TMP2158:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2158]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2159:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2160:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3287:%.*]] = icmp slt i32 [[TMP2159]], [[TMP2160]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3287]], label [[IF_THEN3289:%.*]], label [[IF_END3290:%.*]]
// SIMD-ONLY0:       if.then3289:
// SIMD-ONLY0-NEXT:    [[TMP2161:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2161]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3290]]
// SIMD-ONLY0:       if.end3290:
// SIMD-ONLY0-NEXT:    [[TMP2162:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2162]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2163:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2164:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3291:%.*]] = icmp eq i32 [[TMP2163]], [[TMP2164]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3291]], label [[IF_THEN3293:%.*]], label [[IF_END3294:%.*]]
// SIMD-ONLY0:       if.then3293:
// SIMD-ONLY0-NEXT:    [[TMP2165:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2165]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3294]]
// SIMD-ONLY0:       if.end3294:
// SIMD-ONLY0-NEXT:    [[TMP2166:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2166]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2167:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2168:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3295:%.*]] = icmp eq i32 [[TMP2167]], [[TMP2168]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3295]], label [[IF_THEN3297:%.*]], label [[IF_END3298:%.*]]
// SIMD-ONLY0:       if.then3297:
// SIMD-ONLY0-NEXT:    [[TMP2169:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2169]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3298]]
// SIMD-ONLY0:       if.end3298:
// SIMD-ONLY0-NEXT:    [[TMP2170:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2171:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3299:%.*]] = icmp sgt i32 [[TMP2170]], [[TMP2171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3299]], label [[IF_THEN3301:%.*]], label [[IF_END3302:%.*]]
// SIMD-ONLY0:       if.then3301:
// SIMD-ONLY0-NEXT:    [[TMP2172:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2172]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3302]]
// SIMD-ONLY0:       if.end3302:
// SIMD-ONLY0-NEXT:    [[TMP2173:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2173]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2174:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2175:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3303:%.*]] = icmp sgt i32 [[TMP2174]], [[TMP2175]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3303]], label [[IF_THEN3305:%.*]], label [[IF_END3306:%.*]]
// SIMD-ONLY0:       if.then3305:
// SIMD-ONLY0-NEXT:    [[TMP2176:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2176]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3306]]
// SIMD-ONLY0:       if.end3306:
// SIMD-ONLY0-NEXT:    [[TMP2177:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2177]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2178:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2179:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3307:%.*]] = icmp slt i32 [[TMP2178]], [[TMP2179]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3307]], label [[IF_THEN3309:%.*]], label [[IF_END3310:%.*]]
// SIMD-ONLY0:       if.then3309:
// SIMD-ONLY0-NEXT:    [[TMP2180:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2180]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3310]]
// SIMD-ONLY0:       if.end3310:
// SIMD-ONLY0-NEXT:    [[TMP2181:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2181]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2182:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2183:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3311:%.*]] = icmp slt i32 [[TMP2182]], [[TMP2183]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3311]], label [[IF_THEN3313:%.*]], label [[IF_END3314:%.*]]
// SIMD-ONLY0:       if.then3313:
// SIMD-ONLY0-NEXT:    [[TMP2184:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2184]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3314]]
// SIMD-ONLY0:       if.end3314:
// SIMD-ONLY0-NEXT:    [[TMP2185:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2185]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2186:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2187:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3315:%.*]] = icmp eq i32 [[TMP2186]], [[TMP2187]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3315]], label [[IF_THEN3317:%.*]], label [[IF_END3318:%.*]]
// SIMD-ONLY0:       if.then3317:
// SIMD-ONLY0-NEXT:    [[TMP2188:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2188]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3318]]
// SIMD-ONLY0:       if.end3318:
// SIMD-ONLY0-NEXT:    [[TMP2189:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2189]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2190:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2191:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3319:%.*]] = icmp eq i32 [[TMP2190]], [[TMP2191]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3319]], label [[IF_THEN3321:%.*]], label [[IF_END3322:%.*]]
// SIMD-ONLY0:       if.then3321:
// SIMD-ONLY0-NEXT:    [[TMP2192:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2192]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3322]]
// SIMD-ONLY0:       if.end3322:
// SIMD-ONLY0-NEXT:    [[TMP2193:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2193]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2194:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2195:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3323:%.*]] = icmp eq i32 [[TMP2194]], [[TMP2195]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3323]], label [[IF_THEN3325:%.*]], label [[IF_ELSE3326:%.*]]
// SIMD-ONLY0:       if.then3325:
// SIMD-ONLY0-NEXT:    [[TMP2196:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2196]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3327:%.*]]
// SIMD-ONLY0:       if.else3326:
// SIMD-ONLY0-NEXT:    [[TMP2197:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2197]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3327]]
// SIMD-ONLY0:       if.end3327:
// SIMD-ONLY0-NEXT:    [[TMP2198:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2199:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3328:%.*]] = icmp eq i32 [[TMP2198]], [[TMP2199]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3328]], label [[IF_THEN3330:%.*]], label [[IF_ELSE3331:%.*]]
// SIMD-ONLY0:       if.then3330:
// SIMD-ONLY0-NEXT:    [[TMP2200:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2200]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3332:%.*]]
// SIMD-ONLY0:       if.else3331:
// SIMD-ONLY0-NEXT:    [[TMP2201:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2201]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3332]]
// SIMD-ONLY0:       if.end3332:
// SIMD-ONLY0-NEXT:    [[TMP2202:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2203:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3333:%.*]] = icmp eq i32 [[TMP2202]], [[TMP2203]]
// SIMD-ONLY0-NEXT:    [[CONV3334:%.*]] = zext i1 [[CMP3333]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3334]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2204:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3335:%.*]] = icmp ne i32 [[TMP2204]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3335]], label [[IF_THEN3336:%.*]], label [[IF_END3337:%.*]]
// SIMD-ONLY0:       if.then3336:
// SIMD-ONLY0-NEXT:    [[TMP2205:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2205]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3337]]
// SIMD-ONLY0:       if.end3337:
// SIMD-ONLY0-NEXT:    [[TMP2206:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2207:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3338:%.*]] = icmp eq i32 [[TMP2206]], [[TMP2207]]
// SIMD-ONLY0-NEXT:    [[CONV3339:%.*]] = zext i1 [[CMP3338]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3339]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2208:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3340:%.*]] = icmp ne i32 [[TMP2208]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3340]], label [[IF_THEN3341:%.*]], label [[IF_END3342:%.*]]
// SIMD-ONLY0:       if.then3341:
// SIMD-ONLY0-NEXT:    [[TMP2209:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2209]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3342]]
// SIMD-ONLY0:       if.end3342:
// SIMD-ONLY0-NEXT:    [[TMP2210:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2211:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3343:%.*]] = icmp eq i32 [[TMP2210]], [[TMP2211]]
// SIMD-ONLY0-NEXT:    [[CONV3344:%.*]] = zext i1 [[CMP3343]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3344]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2212:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3345:%.*]] = icmp ne i32 [[TMP2212]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3345]], label [[IF_THEN3346:%.*]], label [[IF_ELSE3347:%.*]]
// SIMD-ONLY0:       if.then3346:
// SIMD-ONLY0-NEXT:    [[TMP2213:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2213]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3348:%.*]]
// SIMD-ONLY0:       if.else3347:
// SIMD-ONLY0-NEXT:    [[TMP2214:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2214]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3348]]
// SIMD-ONLY0:       if.end3348:
// SIMD-ONLY0-NEXT:    [[TMP2215:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2216:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3349:%.*]] = icmp eq i32 [[TMP2215]], [[TMP2216]]
// SIMD-ONLY0-NEXT:    [[CONV3350:%.*]] = zext i1 [[CMP3349]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3350]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2217:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3351:%.*]] = icmp ne i32 [[TMP2217]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3351]], label [[IF_THEN3352:%.*]], label [[IF_ELSE3353:%.*]]
// SIMD-ONLY0:       if.then3352:
// SIMD-ONLY0-NEXT:    [[TMP2218:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2218]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3354:%.*]]
// SIMD-ONLY0:       if.else3353:
// SIMD-ONLY0-NEXT:    [[TMP2219:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2219]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3354]]
// SIMD-ONLY0:       if.end3354:
// SIMD-ONLY0-NEXT:    [[TMP2220:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2220]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2221:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2222:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3355:%.*]] = icmp ugt i32 [[TMP2221]], [[TMP2222]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3355]], label [[IF_THEN3357:%.*]], label [[IF_END3358:%.*]]
// SIMD-ONLY0:       if.then3357:
// SIMD-ONLY0-NEXT:    [[TMP2223:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2223]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3358]]
// SIMD-ONLY0:       if.end3358:
// SIMD-ONLY0-NEXT:    [[TMP2224:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2224]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2225:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2226:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3359:%.*]] = icmp ugt i32 [[TMP2225]], [[TMP2226]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3359]], label [[IF_THEN3361:%.*]], label [[IF_END3362:%.*]]
// SIMD-ONLY0:       if.then3361:
// SIMD-ONLY0-NEXT:    [[TMP2227:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2227]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3362]]
// SIMD-ONLY0:       if.end3362:
// SIMD-ONLY0-NEXT:    [[TMP2228:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2228]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2229:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2230:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3363:%.*]] = icmp ult i32 [[TMP2229]], [[TMP2230]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3363]], label [[IF_THEN3365:%.*]], label [[IF_END3366:%.*]]
// SIMD-ONLY0:       if.then3365:
// SIMD-ONLY0-NEXT:    [[TMP2231:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2231]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3366]]
// SIMD-ONLY0:       if.end3366:
// SIMD-ONLY0-NEXT:    [[TMP2232:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2232]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2233:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2234:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3367:%.*]] = icmp ult i32 [[TMP2233]], [[TMP2234]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3367]], label [[IF_THEN3369:%.*]], label [[IF_END3370:%.*]]
// SIMD-ONLY0:       if.then3369:
// SIMD-ONLY0-NEXT:    [[TMP2235:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2235]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3370]]
// SIMD-ONLY0:       if.end3370:
// SIMD-ONLY0-NEXT:    [[TMP2236:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2236]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2237:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2238:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3371:%.*]] = icmp eq i32 [[TMP2237]], [[TMP2238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3371]], label [[IF_THEN3373:%.*]], label [[IF_END3374:%.*]]
// SIMD-ONLY0:       if.then3373:
// SIMD-ONLY0-NEXT:    [[TMP2239:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2239]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3374]]
// SIMD-ONLY0:       if.end3374:
// SIMD-ONLY0-NEXT:    [[TMP2240:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2240]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2241:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2242:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3375:%.*]] = icmp eq i32 [[TMP2241]], [[TMP2242]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3375]], label [[IF_THEN3377:%.*]], label [[IF_END3378:%.*]]
// SIMD-ONLY0:       if.then3377:
// SIMD-ONLY0-NEXT:    [[TMP2243:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2243]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3378]]
// SIMD-ONLY0:       if.end3378:
// SIMD-ONLY0-NEXT:    [[TMP2244:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2245:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3379:%.*]] = icmp ugt i32 [[TMP2244]], [[TMP2245]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3379]], label [[IF_THEN3381:%.*]], label [[IF_END3382:%.*]]
// SIMD-ONLY0:       if.then3381:
// SIMD-ONLY0-NEXT:    [[TMP2246:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2246]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3382]]
// SIMD-ONLY0:       if.end3382:
// SIMD-ONLY0-NEXT:    [[TMP2247:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2247]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2248:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2249:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3383:%.*]] = icmp ugt i32 [[TMP2248]], [[TMP2249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3383]], label [[IF_THEN3385:%.*]], label [[IF_END3386:%.*]]
// SIMD-ONLY0:       if.then3385:
// SIMD-ONLY0-NEXT:    [[TMP2250:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2250]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3386]]
// SIMD-ONLY0:       if.end3386:
// SIMD-ONLY0-NEXT:    [[TMP2251:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2251]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2252:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2253:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3387:%.*]] = icmp ult i32 [[TMP2252]], [[TMP2253]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3387]], label [[IF_THEN3389:%.*]], label [[IF_END3390:%.*]]
// SIMD-ONLY0:       if.then3389:
// SIMD-ONLY0-NEXT:    [[TMP2254:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2254]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3390]]
// SIMD-ONLY0:       if.end3390:
// SIMD-ONLY0-NEXT:    [[TMP2255:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2255]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2256:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2257:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3391:%.*]] = icmp ult i32 [[TMP2256]], [[TMP2257]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3391]], label [[IF_THEN3393:%.*]], label [[IF_END3394:%.*]]
// SIMD-ONLY0:       if.then3393:
// SIMD-ONLY0-NEXT:    [[TMP2258:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2258]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3394]]
// SIMD-ONLY0:       if.end3394:
// SIMD-ONLY0-NEXT:    [[TMP2259:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2259]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2260:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2261:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3395:%.*]] = icmp eq i32 [[TMP2260]], [[TMP2261]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3395]], label [[IF_THEN3397:%.*]], label [[IF_END3398:%.*]]
// SIMD-ONLY0:       if.then3397:
// SIMD-ONLY0-NEXT:    [[TMP2262:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2262]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3398]]
// SIMD-ONLY0:       if.end3398:
// SIMD-ONLY0-NEXT:    [[TMP2263:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2263]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2264:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2265:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3399:%.*]] = icmp eq i32 [[TMP2264]], [[TMP2265]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3399]], label [[IF_THEN3401:%.*]], label [[IF_END3402:%.*]]
// SIMD-ONLY0:       if.then3401:
// SIMD-ONLY0-NEXT:    [[TMP2266:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2266]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3402]]
// SIMD-ONLY0:       if.end3402:
// SIMD-ONLY0-NEXT:    [[TMP2267:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2267]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2268:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2269:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3403:%.*]] = icmp eq i32 [[TMP2268]], [[TMP2269]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3403]], label [[IF_THEN3405:%.*]], label [[IF_ELSE3406:%.*]]
// SIMD-ONLY0:       if.then3405:
// SIMD-ONLY0-NEXT:    [[TMP2270:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2270]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3407:%.*]]
// SIMD-ONLY0:       if.else3406:
// SIMD-ONLY0-NEXT:    [[TMP2271:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2271]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3407]]
// SIMD-ONLY0:       if.end3407:
// SIMD-ONLY0-NEXT:    [[TMP2272:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2273:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3408:%.*]] = icmp eq i32 [[TMP2272]], [[TMP2273]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3408]], label [[IF_THEN3410:%.*]], label [[IF_ELSE3411:%.*]]
// SIMD-ONLY0:       if.then3410:
// SIMD-ONLY0-NEXT:    [[TMP2274:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2274]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3412:%.*]]
// SIMD-ONLY0:       if.else3411:
// SIMD-ONLY0-NEXT:    [[TMP2275:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2275]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3412]]
// SIMD-ONLY0:       if.end3412:
// SIMD-ONLY0-NEXT:    [[TMP2276:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2277:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3413:%.*]] = icmp eq i32 [[TMP2276]], [[TMP2277]]
// SIMD-ONLY0-NEXT:    [[CONV3414:%.*]] = zext i1 [[CMP3413]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3414]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2278:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3415:%.*]] = icmp ne i32 [[TMP2278]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3415]], label [[IF_THEN3416:%.*]], label [[IF_END3417:%.*]]
// SIMD-ONLY0:       if.then3416:
// SIMD-ONLY0-NEXT:    [[TMP2279:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2279]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3417]]
// SIMD-ONLY0:       if.end3417:
// SIMD-ONLY0-NEXT:    [[TMP2280:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2281:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3418:%.*]] = icmp eq i32 [[TMP2280]], [[TMP2281]]
// SIMD-ONLY0-NEXT:    [[CONV3419:%.*]] = zext i1 [[CMP3418]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3419]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2282:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3420:%.*]] = icmp ne i32 [[TMP2282]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3420]], label [[IF_THEN3421:%.*]], label [[IF_END3422:%.*]]
// SIMD-ONLY0:       if.then3421:
// SIMD-ONLY0-NEXT:    [[TMP2283:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2283]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3422]]
// SIMD-ONLY0:       if.end3422:
// SIMD-ONLY0-NEXT:    [[TMP2284:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2285:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3423:%.*]] = icmp eq i32 [[TMP2284]], [[TMP2285]]
// SIMD-ONLY0-NEXT:    [[CONV3424:%.*]] = zext i1 [[CMP3423]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3424]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2286:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3425:%.*]] = icmp ne i32 [[TMP2286]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3425]], label [[IF_THEN3426:%.*]], label [[IF_ELSE3427:%.*]]
// SIMD-ONLY0:       if.then3426:
// SIMD-ONLY0-NEXT:    [[TMP2287:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2287]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3428:%.*]]
// SIMD-ONLY0:       if.else3427:
// SIMD-ONLY0-NEXT:    [[TMP2288:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2288]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3428]]
// SIMD-ONLY0:       if.end3428:
// SIMD-ONLY0-NEXT:    [[TMP2289:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2290:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3429:%.*]] = icmp eq i32 [[TMP2289]], [[TMP2290]]
// SIMD-ONLY0-NEXT:    [[CONV3430:%.*]] = zext i1 [[CMP3429]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3430]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2291:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3431:%.*]] = icmp ne i32 [[TMP2291]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3431]], label [[IF_THEN3432:%.*]], label [[IF_ELSE3433:%.*]]
// SIMD-ONLY0:       if.then3432:
// SIMD-ONLY0-NEXT:    [[TMP2292:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2292]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3434:%.*]]
// SIMD-ONLY0:       if.else3433:
// SIMD-ONLY0-NEXT:    [[TMP2293:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2293]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3434]]
// SIMD-ONLY0:       if.end3434:
// SIMD-ONLY0-NEXT:    [[TMP2294:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2294]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2295:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2296:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3435:%.*]] = icmp ugt i32 [[TMP2295]], [[TMP2296]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3435]], label [[IF_THEN3437:%.*]], label [[IF_END3438:%.*]]
// SIMD-ONLY0:       if.then3437:
// SIMD-ONLY0-NEXT:    [[TMP2297:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2297]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3438]]
// SIMD-ONLY0:       if.end3438:
// SIMD-ONLY0-NEXT:    [[TMP2298:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2298]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2299:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2300:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3439:%.*]] = icmp ugt i32 [[TMP2299]], [[TMP2300]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3439]], label [[IF_THEN3441:%.*]], label [[IF_END3442:%.*]]
// SIMD-ONLY0:       if.then3441:
// SIMD-ONLY0-NEXT:    [[TMP2301:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2301]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3442]]
// SIMD-ONLY0:       if.end3442:
// SIMD-ONLY0-NEXT:    [[TMP2302:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2302]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2303:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2304:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3443:%.*]] = icmp ult i32 [[TMP2303]], [[TMP2304]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3443]], label [[IF_THEN3445:%.*]], label [[IF_END3446:%.*]]
// SIMD-ONLY0:       if.then3445:
// SIMD-ONLY0-NEXT:    [[TMP2305:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2305]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3446]]
// SIMD-ONLY0:       if.end3446:
// SIMD-ONLY0-NEXT:    [[TMP2306:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2306]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2307:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2308:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3447:%.*]] = icmp ult i32 [[TMP2307]], [[TMP2308]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3447]], label [[IF_THEN3449:%.*]], label [[IF_END3450:%.*]]
// SIMD-ONLY0:       if.then3449:
// SIMD-ONLY0-NEXT:    [[TMP2309:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2309]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3450]]
// SIMD-ONLY0:       if.end3450:
// SIMD-ONLY0-NEXT:    [[TMP2310:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2310]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2311:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2312:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3451:%.*]] = icmp eq i32 [[TMP2311]], [[TMP2312]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3451]], label [[IF_THEN3453:%.*]], label [[IF_END3454:%.*]]
// SIMD-ONLY0:       if.then3453:
// SIMD-ONLY0-NEXT:    [[TMP2313:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2313]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3454]]
// SIMD-ONLY0:       if.end3454:
// SIMD-ONLY0-NEXT:    [[TMP2314:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2314]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2315:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2316:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3455:%.*]] = icmp eq i32 [[TMP2315]], [[TMP2316]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3455]], label [[IF_THEN3457:%.*]], label [[IF_END3458:%.*]]
// SIMD-ONLY0:       if.then3457:
// SIMD-ONLY0-NEXT:    [[TMP2317:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2317]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3458]]
// SIMD-ONLY0:       if.end3458:
// SIMD-ONLY0-NEXT:    [[TMP2318:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2319:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3459:%.*]] = icmp ugt i32 [[TMP2318]], [[TMP2319]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3459]], label [[IF_THEN3461:%.*]], label [[IF_END3462:%.*]]
// SIMD-ONLY0:       if.then3461:
// SIMD-ONLY0-NEXT:    [[TMP2320:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2320]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3462]]
// SIMD-ONLY0:       if.end3462:
// SIMD-ONLY0-NEXT:    [[TMP2321:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2321]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2322:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2323:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3463:%.*]] = icmp ugt i32 [[TMP2322]], [[TMP2323]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3463]], label [[IF_THEN3465:%.*]], label [[IF_END3466:%.*]]
// SIMD-ONLY0:       if.then3465:
// SIMD-ONLY0-NEXT:    [[TMP2324:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2324]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3466]]
// SIMD-ONLY0:       if.end3466:
// SIMD-ONLY0-NEXT:    [[TMP2325:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2325]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2326:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2327:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3467:%.*]] = icmp ult i32 [[TMP2326]], [[TMP2327]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3467]], label [[IF_THEN3469:%.*]], label [[IF_END3470:%.*]]
// SIMD-ONLY0:       if.then3469:
// SIMD-ONLY0-NEXT:    [[TMP2328:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2328]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3470]]
// SIMD-ONLY0:       if.end3470:
// SIMD-ONLY0-NEXT:    [[TMP2329:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2329]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2330:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2331:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3471:%.*]] = icmp ult i32 [[TMP2330]], [[TMP2331]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3471]], label [[IF_THEN3473:%.*]], label [[IF_END3474:%.*]]
// SIMD-ONLY0:       if.then3473:
// SIMD-ONLY0-NEXT:    [[TMP2332:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2332]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3474]]
// SIMD-ONLY0:       if.end3474:
// SIMD-ONLY0-NEXT:    [[TMP2333:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2333]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2334:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2335:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3475:%.*]] = icmp eq i32 [[TMP2334]], [[TMP2335]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3475]], label [[IF_THEN3477:%.*]], label [[IF_END3478:%.*]]
// SIMD-ONLY0:       if.then3477:
// SIMD-ONLY0-NEXT:    [[TMP2336:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2336]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3478]]
// SIMD-ONLY0:       if.end3478:
// SIMD-ONLY0-NEXT:    [[TMP2337:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2337]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2338:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2339:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3479:%.*]] = icmp eq i32 [[TMP2338]], [[TMP2339]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3479]], label [[IF_THEN3481:%.*]], label [[IF_END3482:%.*]]
// SIMD-ONLY0:       if.then3481:
// SIMD-ONLY0-NEXT:    [[TMP2340:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2340]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3482]]
// SIMD-ONLY0:       if.end3482:
// SIMD-ONLY0-NEXT:    [[TMP2341:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2341]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2342:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2343:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3483:%.*]] = icmp eq i32 [[TMP2342]], [[TMP2343]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3483]], label [[IF_THEN3485:%.*]], label [[IF_ELSE3486:%.*]]
// SIMD-ONLY0:       if.then3485:
// SIMD-ONLY0-NEXT:    [[TMP2344:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2344]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3487:%.*]]
// SIMD-ONLY0:       if.else3486:
// SIMD-ONLY0-NEXT:    [[TMP2345:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2345]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3487]]
// SIMD-ONLY0:       if.end3487:
// SIMD-ONLY0-NEXT:    [[TMP2346:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2347:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3488:%.*]] = icmp eq i32 [[TMP2346]], [[TMP2347]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3488]], label [[IF_THEN3490:%.*]], label [[IF_ELSE3491:%.*]]
// SIMD-ONLY0:       if.then3490:
// SIMD-ONLY0-NEXT:    [[TMP2348:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2348]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3492:%.*]]
// SIMD-ONLY0:       if.else3491:
// SIMD-ONLY0-NEXT:    [[TMP2349:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2349]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3492]]
// SIMD-ONLY0:       if.end3492:
// SIMD-ONLY0-NEXT:    [[TMP2350:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2351:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3493:%.*]] = icmp eq i32 [[TMP2350]], [[TMP2351]]
// SIMD-ONLY0-NEXT:    [[CONV3494:%.*]] = zext i1 [[CMP3493]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3494]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2352:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3495:%.*]] = icmp ne i32 [[TMP2352]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3495]], label [[IF_THEN3496:%.*]], label [[IF_END3497:%.*]]
// SIMD-ONLY0:       if.then3496:
// SIMD-ONLY0-NEXT:    [[TMP2353:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2353]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3497]]
// SIMD-ONLY0:       if.end3497:
// SIMD-ONLY0-NEXT:    [[TMP2354:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2355:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3498:%.*]] = icmp eq i32 [[TMP2354]], [[TMP2355]]
// SIMD-ONLY0-NEXT:    [[CONV3499:%.*]] = zext i1 [[CMP3498]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3499]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2356:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3500:%.*]] = icmp ne i32 [[TMP2356]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3500]], label [[IF_THEN3501:%.*]], label [[IF_END3502:%.*]]
// SIMD-ONLY0:       if.then3501:
// SIMD-ONLY0-NEXT:    [[TMP2357:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2357]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3502]]
// SIMD-ONLY0:       if.end3502:
// SIMD-ONLY0-NEXT:    [[TMP2358:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2359:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3503:%.*]] = icmp eq i32 [[TMP2358]], [[TMP2359]]
// SIMD-ONLY0-NEXT:    [[CONV3504:%.*]] = zext i1 [[CMP3503]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3504]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2360:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3505:%.*]] = icmp ne i32 [[TMP2360]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3505]], label [[IF_THEN3506:%.*]], label [[IF_ELSE3507:%.*]]
// SIMD-ONLY0:       if.then3506:
// SIMD-ONLY0-NEXT:    [[TMP2361:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2361]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3508:%.*]]
// SIMD-ONLY0:       if.else3507:
// SIMD-ONLY0-NEXT:    [[TMP2362:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2362]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3508]]
// SIMD-ONLY0:       if.end3508:
// SIMD-ONLY0-NEXT:    [[TMP2363:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2364:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3509:%.*]] = icmp eq i32 [[TMP2363]], [[TMP2364]]
// SIMD-ONLY0-NEXT:    [[CONV3510:%.*]] = zext i1 [[CMP3509]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3510]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2365:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3511:%.*]] = icmp ne i32 [[TMP2365]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3511]], label [[IF_THEN3512:%.*]], label [[IF_ELSE3513:%.*]]
// SIMD-ONLY0:       if.then3512:
// SIMD-ONLY0-NEXT:    [[TMP2366:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2366]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3514:%.*]]
// SIMD-ONLY0:       if.else3513:
// SIMD-ONLY0-NEXT:    [[TMP2367:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2367]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3514]]
// SIMD-ONLY0:       if.end3514:
// SIMD-ONLY0-NEXT:    [[TMP2368:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2368]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2369:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2370:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3515:%.*]] = icmp ugt i32 [[TMP2369]], [[TMP2370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3515]], label [[IF_THEN3517:%.*]], label [[IF_END3518:%.*]]
// SIMD-ONLY0:       if.then3517:
// SIMD-ONLY0-NEXT:    [[TMP2371:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2371]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3518]]
// SIMD-ONLY0:       if.end3518:
// SIMD-ONLY0-NEXT:    [[TMP2372:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2372]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2373:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2374:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3519:%.*]] = icmp ugt i32 [[TMP2373]], [[TMP2374]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3519]], label [[IF_THEN3521:%.*]], label [[IF_END3522:%.*]]
// SIMD-ONLY0:       if.then3521:
// SIMD-ONLY0-NEXT:    [[TMP2375:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2375]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3522]]
// SIMD-ONLY0:       if.end3522:
// SIMD-ONLY0-NEXT:    [[TMP2376:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2376]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2377:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2378:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3523:%.*]] = icmp ult i32 [[TMP2377]], [[TMP2378]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3523]], label [[IF_THEN3525:%.*]], label [[IF_END3526:%.*]]
// SIMD-ONLY0:       if.then3525:
// SIMD-ONLY0-NEXT:    [[TMP2379:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2379]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3526]]
// SIMD-ONLY0:       if.end3526:
// SIMD-ONLY0-NEXT:    [[TMP2380:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2380]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2381:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2382:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3527:%.*]] = icmp ult i32 [[TMP2381]], [[TMP2382]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3527]], label [[IF_THEN3529:%.*]], label [[IF_END3530:%.*]]
// SIMD-ONLY0:       if.then3529:
// SIMD-ONLY0-NEXT:    [[TMP2383:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2383]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3530]]
// SIMD-ONLY0:       if.end3530:
// SIMD-ONLY0-NEXT:    [[TMP2384:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2384]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2385:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2386:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3531:%.*]] = icmp eq i32 [[TMP2385]], [[TMP2386]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3531]], label [[IF_THEN3533:%.*]], label [[IF_END3534:%.*]]
// SIMD-ONLY0:       if.then3533:
// SIMD-ONLY0-NEXT:    [[TMP2387:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2387]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3534]]
// SIMD-ONLY0:       if.end3534:
// SIMD-ONLY0-NEXT:    [[TMP2388:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2388]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2389:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2390:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3535:%.*]] = icmp eq i32 [[TMP2389]], [[TMP2390]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3535]], label [[IF_THEN3537:%.*]], label [[IF_END3538:%.*]]
// SIMD-ONLY0:       if.then3537:
// SIMD-ONLY0-NEXT:    [[TMP2391:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2391]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3538]]
// SIMD-ONLY0:       if.end3538:
// SIMD-ONLY0-NEXT:    [[TMP2392:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2393:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3539:%.*]] = icmp ugt i32 [[TMP2392]], [[TMP2393]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3539]], label [[IF_THEN3541:%.*]], label [[IF_END3542:%.*]]
// SIMD-ONLY0:       if.then3541:
// SIMD-ONLY0-NEXT:    [[TMP2394:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2394]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3542]]
// SIMD-ONLY0:       if.end3542:
// SIMD-ONLY0-NEXT:    [[TMP2395:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2395]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2396:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2397:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3543:%.*]] = icmp ugt i32 [[TMP2396]], [[TMP2397]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3543]], label [[IF_THEN3545:%.*]], label [[IF_END3546:%.*]]
// SIMD-ONLY0:       if.then3545:
// SIMD-ONLY0-NEXT:    [[TMP2398:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2398]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3546]]
// SIMD-ONLY0:       if.end3546:
// SIMD-ONLY0-NEXT:    [[TMP2399:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2399]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2400:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2401:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3547:%.*]] = icmp ult i32 [[TMP2400]], [[TMP2401]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3547]], label [[IF_THEN3549:%.*]], label [[IF_END3550:%.*]]
// SIMD-ONLY0:       if.then3549:
// SIMD-ONLY0-NEXT:    [[TMP2402:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2402]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3550]]
// SIMD-ONLY0:       if.end3550:
// SIMD-ONLY0-NEXT:    [[TMP2403:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2403]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2404:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2405:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3551:%.*]] = icmp ult i32 [[TMP2404]], [[TMP2405]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3551]], label [[IF_THEN3553:%.*]], label [[IF_END3554:%.*]]
// SIMD-ONLY0:       if.then3553:
// SIMD-ONLY0-NEXT:    [[TMP2406:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2406]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3554]]
// SIMD-ONLY0:       if.end3554:
// SIMD-ONLY0-NEXT:    [[TMP2407:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2407]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2408:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2409:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3555:%.*]] = icmp eq i32 [[TMP2408]], [[TMP2409]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3555]], label [[IF_THEN3557:%.*]], label [[IF_END3558:%.*]]
// SIMD-ONLY0:       if.then3557:
// SIMD-ONLY0-NEXT:    [[TMP2410:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2410]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3558]]
// SIMD-ONLY0:       if.end3558:
// SIMD-ONLY0-NEXT:    [[TMP2411:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2411]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2412:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2413:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3559:%.*]] = icmp eq i32 [[TMP2412]], [[TMP2413]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3559]], label [[IF_THEN3561:%.*]], label [[IF_END3562:%.*]]
// SIMD-ONLY0:       if.then3561:
// SIMD-ONLY0-NEXT:    [[TMP2414:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2414]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3562]]
// SIMD-ONLY0:       if.end3562:
// SIMD-ONLY0-NEXT:    [[TMP2415:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2415]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2416:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2417:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3563:%.*]] = icmp eq i32 [[TMP2416]], [[TMP2417]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3563]], label [[IF_THEN3565:%.*]], label [[IF_ELSE3566:%.*]]
// SIMD-ONLY0:       if.then3565:
// SIMD-ONLY0-NEXT:    [[TMP2418:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2418]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3567:%.*]]
// SIMD-ONLY0:       if.else3566:
// SIMD-ONLY0-NEXT:    [[TMP2419:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2419]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3567]]
// SIMD-ONLY0:       if.end3567:
// SIMD-ONLY0-NEXT:    [[TMP2420:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2421:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3568:%.*]] = icmp eq i32 [[TMP2420]], [[TMP2421]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3568]], label [[IF_THEN3570:%.*]], label [[IF_ELSE3571:%.*]]
// SIMD-ONLY0:       if.then3570:
// SIMD-ONLY0-NEXT:    [[TMP2422:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2422]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3572:%.*]]
// SIMD-ONLY0:       if.else3571:
// SIMD-ONLY0-NEXT:    [[TMP2423:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2423]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3572]]
// SIMD-ONLY0:       if.end3572:
// SIMD-ONLY0-NEXT:    [[TMP2424:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2425:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3573:%.*]] = icmp eq i32 [[TMP2424]], [[TMP2425]]
// SIMD-ONLY0-NEXT:    [[CONV3574:%.*]] = zext i1 [[CMP3573]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3574]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2426:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3575:%.*]] = icmp ne i32 [[TMP2426]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3575]], label [[IF_THEN3576:%.*]], label [[IF_END3577:%.*]]
// SIMD-ONLY0:       if.then3576:
// SIMD-ONLY0-NEXT:    [[TMP2427:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2427]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3577]]
// SIMD-ONLY0:       if.end3577:
// SIMD-ONLY0-NEXT:    [[TMP2428:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2429:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3578:%.*]] = icmp eq i32 [[TMP2428]], [[TMP2429]]
// SIMD-ONLY0-NEXT:    [[CONV3579:%.*]] = zext i1 [[CMP3578]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3579]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2430:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3580:%.*]] = icmp ne i32 [[TMP2430]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3580]], label [[IF_THEN3581:%.*]], label [[IF_END3582:%.*]]
// SIMD-ONLY0:       if.then3581:
// SIMD-ONLY0-NEXT:    [[TMP2431:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2431]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3582]]
// SIMD-ONLY0:       if.end3582:
// SIMD-ONLY0-NEXT:    [[TMP2432:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2433:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3583:%.*]] = icmp eq i32 [[TMP2432]], [[TMP2433]]
// SIMD-ONLY0-NEXT:    [[CONV3584:%.*]] = zext i1 [[CMP3583]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3584]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2434:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3585:%.*]] = icmp ne i32 [[TMP2434]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3585]], label [[IF_THEN3586:%.*]], label [[IF_ELSE3587:%.*]]
// SIMD-ONLY0:       if.then3586:
// SIMD-ONLY0-NEXT:    [[TMP2435:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2435]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3588:%.*]]
// SIMD-ONLY0:       if.else3587:
// SIMD-ONLY0-NEXT:    [[TMP2436:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2436]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3588]]
// SIMD-ONLY0:       if.end3588:
// SIMD-ONLY0-NEXT:    [[TMP2437:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2438:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3589:%.*]] = icmp eq i32 [[TMP2437]], [[TMP2438]]
// SIMD-ONLY0-NEXT:    [[CONV3590:%.*]] = zext i1 [[CMP3589]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3590]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2439:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3591:%.*]] = icmp ne i32 [[TMP2439]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3591]], label [[IF_THEN3592:%.*]], label [[IF_ELSE3593:%.*]]
// SIMD-ONLY0:       if.then3592:
// SIMD-ONLY0-NEXT:    [[TMP2440:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2440]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3594:%.*]]
// SIMD-ONLY0:       if.else3593:
// SIMD-ONLY0-NEXT:    [[TMP2441:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2441]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3594]]
// SIMD-ONLY0:       if.end3594:
// SIMD-ONLY0-NEXT:    [[TMP2442:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2442]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2443:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2444:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3595:%.*]] = icmp ugt i32 [[TMP2443]], [[TMP2444]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3595]], label [[IF_THEN3597:%.*]], label [[IF_END3598:%.*]]
// SIMD-ONLY0:       if.then3597:
// SIMD-ONLY0-NEXT:    [[TMP2445:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2445]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3598]]
// SIMD-ONLY0:       if.end3598:
// SIMD-ONLY0-NEXT:    [[TMP2446:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2446]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2447:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2448:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3599:%.*]] = icmp ugt i32 [[TMP2447]], [[TMP2448]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3599]], label [[IF_THEN3601:%.*]], label [[IF_END3602:%.*]]
// SIMD-ONLY0:       if.then3601:
// SIMD-ONLY0-NEXT:    [[TMP2449:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2449]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3602]]
// SIMD-ONLY0:       if.end3602:
// SIMD-ONLY0-NEXT:    [[TMP2450:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2450]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2451:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2452:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3603:%.*]] = icmp ult i32 [[TMP2451]], [[TMP2452]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3603]], label [[IF_THEN3605:%.*]], label [[IF_END3606:%.*]]
// SIMD-ONLY0:       if.then3605:
// SIMD-ONLY0-NEXT:    [[TMP2453:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2453]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3606]]
// SIMD-ONLY0:       if.end3606:
// SIMD-ONLY0-NEXT:    [[TMP2454:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2454]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2455:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2456:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3607:%.*]] = icmp ult i32 [[TMP2455]], [[TMP2456]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3607]], label [[IF_THEN3609:%.*]], label [[IF_END3610:%.*]]
// SIMD-ONLY0:       if.then3609:
// SIMD-ONLY0-NEXT:    [[TMP2457:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2457]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3610]]
// SIMD-ONLY0:       if.end3610:
// SIMD-ONLY0-NEXT:    [[TMP2458:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2458]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2459:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2460:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3611:%.*]] = icmp eq i32 [[TMP2459]], [[TMP2460]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3611]], label [[IF_THEN3613:%.*]], label [[IF_END3614:%.*]]
// SIMD-ONLY0:       if.then3613:
// SIMD-ONLY0-NEXT:    [[TMP2461:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2461]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3614]]
// SIMD-ONLY0:       if.end3614:
// SIMD-ONLY0-NEXT:    [[TMP2462:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2462]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2463:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2464:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3615:%.*]] = icmp eq i32 [[TMP2463]], [[TMP2464]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3615]], label [[IF_THEN3617:%.*]], label [[IF_END3618:%.*]]
// SIMD-ONLY0:       if.then3617:
// SIMD-ONLY0-NEXT:    [[TMP2465:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2465]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3618]]
// SIMD-ONLY0:       if.end3618:
// SIMD-ONLY0-NEXT:    [[TMP2466:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2467:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3619:%.*]] = icmp ugt i32 [[TMP2466]], [[TMP2467]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3619]], label [[IF_THEN3621:%.*]], label [[IF_END3622:%.*]]
// SIMD-ONLY0:       if.then3621:
// SIMD-ONLY0-NEXT:    [[TMP2468:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2468]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3622]]
// SIMD-ONLY0:       if.end3622:
// SIMD-ONLY0-NEXT:    [[TMP2469:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2469]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2470:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2471:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3623:%.*]] = icmp ugt i32 [[TMP2470]], [[TMP2471]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3623]], label [[IF_THEN3625:%.*]], label [[IF_END3626:%.*]]
// SIMD-ONLY0:       if.then3625:
// SIMD-ONLY0-NEXT:    [[TMP2472:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2472]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3626]]
// SIMD-ONLY0:       if.end3626:
// SIMD-ONLY0-NEXT:    [[TMP2473:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2473]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2474:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2475:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3627:%.*]] = icmp ult i32 [[TMP2474]], [[TMP2475]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3627]], label [[IF_THEN3629:%.*]], label [[IF_END3630:%.*]]
// SIMD-ONLY0:       if.then3629:
// SIMD-ONLY0-NEXT:    [[TMP2476:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2476]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3630]]
// SIMD-ONLY0:       if.end3630:
// SIMD-ONLY0-NEXT:    [[TMP2477:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2477]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2478:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2479:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3631:%.*]] = icmp ult i32 [[TMP2478]], [[TMP2479]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3631]], label [[IF_THEN3633:%.*]], label [[IF_END3634:%.*]]
// SIMD-ONLY0:       if.then3633:
// SIMD-ONLY0-NEXT:    [[TMP2480:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2480]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3634]]
// SIMD-ONLY0:       if.end3634:
// SIMD-ONLY0-NEXT:    [[TMP2481:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2481]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2482:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2483:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3635:%.*]] = icmp eq i32 [[TMP2482]], [[TMP2483]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3635]], label [[IF_THEN3637:%.*]], label [[IF_END3638:%.*]]
// SIMD-ONLY0:       if.then3637:
// SIMD-ONLY0-NEXT:    [[TMP2484:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2484]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3638]]
// SIMD-ONLY0:       if.end3638:
// SIMD-ONLY0-NEXT:    [[TMP2485:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2485]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2486:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2487:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3639:%.*]] = icmp eq i32 [[TMP2486]], [[TMP2487]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3639]], label [[IF_THEN3641:%.*]], label [[IF_END3642:%.*]]
// SIMD-ONLY0:       if.then3641:
// SIMD-ONLY0-NEXT:    [[TMP2488:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2488]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3642]]
// SIMD-ONLY0:       if.end3642:
// SIMD-ONLY0-NEXT:    [[TMP2489:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2489]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2490:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2491:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3643:%.*]] = icmp eq i32 [[TMP2490]], [[TMP2491]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3643]], label [[IF_THEN3645:%.*]], label [[IF_ELSE3646:%.*]]
// SIMD-ONLY0:       if.then3645:
// SIMD-ONLY0-NEXT:    [[TMP2492:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2492]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3647:%.*]]
// SIMD-ONLY0:       if.else3646:
// SIMD-ONLY0-NEXT:    [[TMP2493:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2493]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3647]]
// SIMD-ONLY0:       if.end3647:
// SIMD-ONLY0-NEXT:    [[TMP2494:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2495:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3648:%.*]] = icmp eq i32 [[TMP2494]], [[TMP2495]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3648]], label [[IF_THEN3650:%.*]], label [[IF_ELSE3651:%.*]]
// SIMD-ONLY0:       if.then3650:
// SIMD-ONLY0-NEXT:    [[TMP2496:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2496]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3652:%.*]]
// SIMD-ONLY0:       if.else3651:
// SIMD-ONLY0-NEXT:    [[TMP2497:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2497]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3652]]
// SIMD-ONLY0:       if.end3652:
// SIMD-ONLY0-NEXT:    [[TMP2498:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2499:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3653:%.*]] = icmp eq i32 [[TMP2498]], [[TMP2499]]
// SIMD-ONLY0-NEXT:    [[CONV3654:%.*]] = zext i1 [[CMP3653]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3654]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2500:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3655:%.*]] = icmp ne i32 [[TMP2500]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3655]], label [[IF_THEN3656:%.*]], label [[IF_END3657:%.*]]
// SIMD-ONLY0:       if.then3656:
// SIMD-ONLY0-NEXT:    [[TMP2501:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2501]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3657]]
// SIMD-ONLY0:       if.end3657:
// SIMD-ONLY0-NEXT:    [[TMP2502:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2503:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3658:%.*]] = icmp eq i32 [[TMP2502]], [[TMP2503]]
// SIMD-ONLY0-NEXT:    [[CONV3659:%.*]] = zext i1 [[CMP3658]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3659]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2504:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3660:%.*]] = icmp ne i32 [[TMP2504]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3660]], label [[IF_THEN3661:%.*]], label [[IF_END3662:%.*]]
// SIMD-ONLY0:       if.then3661:
// SIMD-ONLY0-NEXT:    [[TMP2505:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2505]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3662]]
// SIMD-ONLY0:       if.end3662:
// SIMD-ONLY0-NEXT:    [[TMP2506:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2507:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3663:%.*]] = icmp eq i32 [[TMP2506]], [[TMP2507]]
// SIMD-ONLY0-NEXT:    [[CONV3664:%.*]] = zext i1 [[CMP3663]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3664]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2508:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3665:%.*]] = icmp ne i32 [[TMP2508]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3665]], label [[IF_THEN3666:%.*]], label [[IF_ELSE3667:%.*]]
// SIMD-ONLY0:       if.then3666:
// SIMD-ONLY0-NEXT:    [[TMP2509:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2509]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3668:%.*]]
// SIMD-ONLY0:       if.else3667:
// SIMD-ONLY0-NEXT:    [[TMP2510:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2510]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3668]]
// SIMD-ONLY0:       if.end3668:
// SIMD-ONLY0-NEXT:    [[TMP2511:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2512:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3669:%.*]] = icmp eq i32 [[TMP2511]], [[TMP2512]]
// SIMD-ONLY0-NEXT:    [[CONV3670:%.*]] = zext i1 [[CMP3669]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3670]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2513:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3671:%.*]] = icmp ne i32 [[TMP2513]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3671]], label [[IF_THEN3672:%.*]], label [[IF_ELSE3673:%.*]]
// SIMD-ONLY0:       if.then3672:
// SIMD-ONLY0-NEXT:    [[TMP2514:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2514]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3674:%.*]]
// SIMD-ONLY0:       if.else3673:
// SIMD-ONLY0-NEXT:    [[TMP2515:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2515]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3674]]
// SIMD-ONLY0:       if.end3674:
// SIMD-ONLY0-NEXT:    [[TMP2516:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2516]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2517:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2518:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3675:%.*]] = icmp ugt i32 [[TMP2517]], [[TMP2518]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3675]], label [[IF_THEN3677:%.*]], label [[IF_END3678:%.*]]
// SIMD-ONLY0:       if.then3677:
// SIMD-ONLY0-NEXT:    [[TMP2519:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2519]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3678]]
// SIMD-ONLY0:       if.end3678:
// SIMD-ONLY0-NEXT:    [[TMP2520:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2520]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2521:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2522:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3679:%.*]] = icmp ugt i32 [[TMP2521]], [[TMP2522]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3679]], label [[IF_THEN3681:%.*]], label [[IF_END3682:%.*]]
// SIMD-ONLY0:       if.then3681:
// SIMD-ONLY0-NEXT:    [[TMP2523:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2523]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3682]]
// SIMD-ONLY0:       if.end3682:
// SIMD-ONLY0-NEXT:    [[TMP2524:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2524]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2525:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2526:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3683:%.*]] = icmp ult i32 [[TMP2525]], [[TMP2526]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3683]], label [[IF_THEN3685:%.*]], label [[IF_END3686:%.*]]
// SIMD-ONLY0:       if.then3685:
// SIMD-ONLY0-NEXT:    [[TMP2527:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2527]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3686]]
// SIMD-ONLY0:       if.end3686:
// SIMD-ONLY0-NEXT:    [[TMP2528:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2528]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2529:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2530:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3687:%.*]] = icmp ult i32 [[TMP2529]], [[TMP2530]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3687]], label [[IF_THEN3689:%.*]], label [[IF_END3690:%.*]]
// SIMD-ONLY0:       if.then3689:
// SIMD-ONLY0-NEXT:    [[TMP2531:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2531]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3690]]
// SIMD-ONLY0:       if.end3690:
// SIMD-ONLY0-NEXT:    [[TMP2532:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2532]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2533:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2534:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3691:%.*]] = icmp eq i32 [[TMP2533]], [[TMP2534]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3691]], label [[IF_THEN3693:%.*]], label [[IF_END3694:%.*]]
// SIMD-ONLY0:       if.then3693:
// SIMD-ONLY0-NEXT:    [[TMP2535:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2535]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3694]]
// SIMD-ONLY0:       if.end3694:
// SIMD-ONLY0-NEXT:    [[TMP2536:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2536]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2537:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2538:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3695:%.*]] = icmp eq i32 [[TMP2537]], [[TMP2538]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3695]], label [[IF_THEN3697:%.*]], label [[IF_END3698:%.*]]
// SIMD-ONLY0:       if.then3697:
// SIMD-ONLY0-NEXT:    [[TMP2539:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2539]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3698]]
// SIMD-ONLY0:       if.end3698:
// SIMD-ONLY0-NEXT:    [[TMP2540:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2541:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3699:%.*]] = icmp ugt i32 [[TMP2540]], [[TMP2541]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3699]], label [[IF_THEN3701:%.*]], label [[IF_END3702:%.*]]
// SIMD-ONLY0:       if.then3701:
// SIMD-ONLY0-NEXT:    [[TMP2542:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2542]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3702]]
// SIMD-ONLY0:       if.end3702:
// SIMD-ONLY0-NEXT:    [[TMP2543:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2543]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2544:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2545:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3703:%.*]] = icmp ugt i32 [[TMP2544]], [[TMP2545]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3703]], label [[IF_THEN3705:%.*]], label [[IF_END3706:%.*]]
// SIMD-ONLY0:       if.then3705:
// SIMD-ONLY0-NEXT:    [[TMP2546:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2546]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3706]]
// SIMD-ONLY0:       if.end3706:
// SIMD-ONLY0-NEXT:    [[TMP2547:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2547]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2548:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2549:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3707:%.*]] = icmp ult i32 [[TMP2548]], [[TMP2549]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3707]], label [[IF_THEN3709:%.*]], label [[IF_END3710:%.*]]
// SIMD-ONLY0:       if.then3709:
// SIMD-ONLY0-NEXT:    [[TMP2550:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2550]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3710]]
// SIMD-ONLY0:       if.end3710:
// SIMD-ONLY0-NEXT:    [[TMP2551:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2551]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2552:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2553:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3711:%.*]] = icmp ult i32 [[TMP2552]], [[TMP2553]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3711]], label [[IF_THEN3713:%.*]], label [[IF_END3714:%.*]]
// SIMD-ONLY0:       if.then3713:
// SIMD-ONLY0-NEXT:    [[TMP2554:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2554]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3714]]
// SIMD-ONLY0:       if.end3714:
// SIMD-ONLY0-NEXT:    [[TMP2555:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2555]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2556:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2557:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3715:%.*]] = icmp eq i32 [[TMP2556]], [[TMP2557]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3715]], label [[IF_THEN3717:%.*]], label [[IF_END3718:%.*]]
// SIMD-ONLY0:       if.then3717:
// SIMD-ONLY0-NEXT:    [[TMP2558:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2558]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3718]]
// SIMD-ONLY0:       if.end3718:
// SIMD-ONLY0-NEXT:    [[TMP2559:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2559]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2560:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2561:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3719:%.*]] = icmp eq i32 [[TMP2560]], [[TMP2561]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3719]], label [[IF_THEN3721:%.*]], label [[IF_END3722:%.*]]
// SIMD-ONLY0:       if.then3721:
// SIMD-ONLY0-NEXT:    [[TMP2562:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2562]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3722]]
// SIMD-ONLY0:       if.end3722:
// SIMD-ONLY0-NEXT:    [[TMP2563:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2563]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2564:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2565:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3723:%.*]] = icmp eq i32 [[TMP2564]], [[TMP2565]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3723]], label [[IF_THEN3725:%.*]], label [[IF_ELSE3726:%.*]]
// SIMD-ONLY0:       if.then3725:
// SIMD-ONLY0-NEXT:    [[TMP2566:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2566]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3727:%.*]]
// SIMD-ONLY0:       if.else3726:
// SIMD-ONLY0-NEXT:    [[TMP2567:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2567]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3727]]
// SIMD-ONLY0:       if.end3727:
// SIMD-ONLY0-NEXT:    [[TMP2568:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2569:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3728:%.*]] = icmp eq i32 [[TMP2568]], [[TMP2569]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3728]], label [[IF_THEN3730:%.*]], label [[IF_ELSE3731:%.*]]
// SIMD-ONLY0:       if.then3730:
// SIMD-ONLY0-NEXT:    [[TMP2570:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2570]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3732:%.*]]
// SIMD-ONLY0:       if.else3731:
// SIMD-ONLY0-NEXT:    [[TMP2571:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2571]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3732]]
// SIMD-ONLY0:       if.end3732:
// SIMD-ONLY0-NEXT:    [[TMP2572:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2573:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3733:%.*]] = icmp eq i32 [[TMP2572]], [[TMP2573]]
// SIMD-ONLY0-NEXT:    [[CONV3734:%.*]] = zext i1 [[CMP3733]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3734]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2574:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3735:%.*]] = icmp ne i32 [[TMP2574]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3735]], label [[IF_THEN3736:%.*]], label [[IF_END3737:%.*]]
// SIMD-ONLY0:       if.then3736:
// SIMD-ONLY0-NEXT:    [[TMP2575:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2575]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3737]]
// SIMD-ONLY0:       if.end3737:
// SIMD-ONLY0-NEXT:    [[TMP2576:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2577:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3738:%.*]] = icmp eq i32 [[TMP2576]], [[TMP2577]]
// SIMD-ONLY0-NEXT:    [[CONV3739:%.*]] = zext i1 [[CMP3738]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3739]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2578:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3740:%.*]] = icmp ne i32 [[TMP2578]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3740]], label [[IF_THEN3741:%.*]], label [[IF_END3742:%.*]]
// SIMD-ONLY0:       if.then3741:
// SIMD-ONLY0-NEXT:    [[TMP2579:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2579]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3742]]
// SIMD-ONLY0:       if.end3742:
// SIMD-ONLY0-NEXT:    [[TMP2580:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2581:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3743:%.*]] = icmp eq i32 [[TMP2580]], [[TMP2581]]
// SIMD-ONLY0-NEXT:    [[CONV3744:%.*]] = zext i1 [[CMP3743]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3744]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2582:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3745:%.*]] = icmp ne i32 [[TMP2582]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3745]], label [[IF_THEN3746:%.*]], label [[IF_ELSE3747:%.*]]
// SIMD-ONLY0:       if.then3746:
// SIMD-ONLY0-NEXT:    [[TMP2583:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2583]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3748:%.*]]
// SIMD-ONLY0:       if.else3747:
// SIMD-ONLY0-NEXT:    [[TMP2584:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2584]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3748]]
// SIMD-ONLY0:       if.end3748:
// SIMD-ONLY0-NEXT:    [[TMP2585:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2586:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3749:%.*]] = icmp eq i32 [[TMP2585]], [[TMP2586]]
// SIMD-ONLY0-NEXT:    [[CONV3750:%.*]] = zext i1 [[CMP3749]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3750]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2587:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3751:%.*]] = icmp ne i32 [[TMP2587]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3751]], label [[IF_THEN3752:%.*]], label [[IF_ELSE3753:%.*]]
// SIMD-ONLY0:       if.then3752:
// SIMD-ONLY0-NEXT:    [[TMP2588:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2588]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3754:%.*]]
// SIMD-ONLY0:       if.else3753:
// SIMD-ONLY0-NEXT:    [[TMP2589:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2589]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3754]]
// SIMD-ONLY0:       if.end3754:
// SIMD-ONLY0-NEXT:    [[TMP2590:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2590]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2591:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2592:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3755:%.*]] = icmp ugt i32 [[TMP2591]], [[TMP2592]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3755]], label [[IF_THEN3757:%.*]], label [[IF_END3758:%.*]]
// SIMD-ONLY0:       if.then3757:
// SIMD-ONLY0-NEXT:    [[TMP2593:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2593]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3758]]
// SIMD-ONLY0:       if.end3758:
// SIMD-ONLY0-NEXT:    [[TMP2594:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2594]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2595:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2596:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3759:%.*]] = icmp ugt i32 [[TMP2595]], [[TMP2596]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3759]], label [[IF_THEN3761:%.*]], label [[IF_END3762:%.*]]
// SIMD-ONLY0:       if.then3761:
// SIMD-ONLY0-NEXT:    [[TMP2597:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2597]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3762]]
// SIMD-ONLY0:       if.end3762:
// SIMD-ONLY0-NEXT:    [[TMP2598:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2598]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2599:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2600:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3763:%.*]] = icmp ult i32 [[TMP2599]], [[TMP2600]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3763]], label [[IF_THEN3765:%.*]], label [[IF_END3766:%.*]]
// SIMD-ONLY0:       if.then3765:
// SIMD-ONLY0-NEXT:    [[TMP2601:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2601]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3766]]
// SIMD-ONLY0:       if.end3766:
// SIMD-ONLY0-NEXT:    [[TMP2602:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2602]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2603:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2604:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3767:%.*]] = icmp ult i32 [[TMP2603]], [[TMP2604]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3767]], label [[IF_THEN3769:%.*]], label [[IF_END3770:%.*]]
// SIMD-ONLY0:       if.then3769:
// SIMD-ONLY0-NEXT:    [[TMP2605:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2605]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3770]]
// SIMD-ONLY0:       if.end3770:
// SIMD-ONLY0-NEXT:    [[TMP2606:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2606]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2607:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2608:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3771:%.*]] = icmp eq i32 [[TMP2607]], [[TMP2608]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3771]], label [[IF_THEN3773:%.*]], label [[IF_END3774:%.*]]
// SIMD-ONLY0:       if.then3773:
// SIMD-ONLY0-NEXT:    [[TMP2609:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2609]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3774]]
// SIMD-ONLY0:       if.end3774:
// SIMD-ONLY0-NEXT:    [[TMP2610:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2610]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2611:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2612:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3775:%.*]] = icmp eq i32 [[TMP2611]], [[TMP2612]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3775]], label [[IF_THEN3777:%.*]], label [[IF_END3778:%.*]]
// SIMD-ONLY0:       if.then3777:
// SIMD-ONLY0-NEXT:    [[TMP2613:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2613]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3778]]
// SIMD-ONLY0:       if.end3778:
// SIMD-ONLY0-NEXT:    [[TMP2614:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2615:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3779:%.*]] = icmp ugt i32 [[TMP2614]], [[TMP2615]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3779]], label [[IF_THEN3781:%.*]], label [[IF_END3782:%.*]]
// SIMD-ONLY0:       if.then3781:
// SIMD-ONLY0-NEXT:    [[TMP2616:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2616]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3782]]
// SIMD-ONLY0:       if.end3782:
// SIMD-ONLY0-NEXT:    [[TMP2617:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2617]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2618:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2619:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3783:%.*]] = icmp ugt i32 [[TMP2618]], [[TMP2619]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3783]], label [[IF_THEN3785:%.*]], label [[IF_END3786:%.*]]
// SIMD-ONLY0:       if.then3785:
// SIMD-ONLY0-NEXT:    [[TMP2620:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2620]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3786]]
// SIMD-ONLY0:       if.end3786:
// SIMD-ONLY0-NEXT:    [[TMP2621:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2621]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2622:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2623:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3787:%.*]] = icmp ult i32 [[TMP2622]], [[TMP2623]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3787]], label [[IF_THEN3789:%.*]], label [[IF_END3790:%.*]]
// SIMD-ONLY0:       if.then3789:
// SIMD-ONLY0-NEXT:    [[TMP2624:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2624]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3790]]
// SIMD-ONLY0:       if.end3790:
// SIMD-ONLY0-NEXT:    [[TMP2625:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2625]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2626:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2627:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3791:%.*]] = icmp ult i32 [[TMP2626]], [[TMP2627]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3791]], label [[IF_THEN3793:%.*]], label [[IF_END3794:%.*]]
// SIMD-ONLY0:       if.then3793:
// SIMD-ONLY0-NEXT:    [[TMP2628:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2628]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3794]]
// SIMD-ONLY0:       if.end3794:
// SIMD-ONLY0-NEXT:    [[TMP2629:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2629]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2630:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2631:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3795:%.*]] = icmp eq i32 [[TMP2630]], [[TMP2631]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3795]], label [[IF_THEN3797:%.*]], label [[IF_END3798:%.*]]
// SIMD-ONLY0:       if.then3797:
// SIMD-ONLY0-NEXT:    [[TMP2632:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2632]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3798]]
// SIMD-ONLY0:       if.end3798:
// SIMD-ONLY0-NEXT:    [[TMP2633:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2633]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2634:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2635:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3799:%.*]] = icmp eq i32 [[TMP2634]], [[TMP2635]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3799]], label [[IF_THEN3801:%.*]], label [[IF_END3802:%.*]]
// SIMD-ONLY0:       if.then3801:
// SIMD-ONLY0-NEXT:    [[TMP2636:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2636]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3802]]
// SIMD-ONLY0:       if.end3802:
// SIMD-ONLY0-NEXT:    [[TMP2637:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2637]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2638:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2639:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3803:%.*]] = icmp eq i32 [[TMP2638]], [[TMP2639]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3803]], label [[IF_THEN3805:%.*]], label [[IF_ELSE3806:%.*]]
// SIMD-ONLY0:       if.then3805:
// SIMD-ONLY0-NEXT:    [[TMP2640:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2640]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3807:%.*]]
// SIMD-ONLY0:       if.else3806:
// SIMD-ONLY0-NEXT:    [[TMP2641:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2641]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3807]]
// SIMD-ONLY0:       if.end3807:
// SIMD-ONLY0-NEXT:    [[TMP2642:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2643:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3808:%.*]] = icmp eq i32 [[TMP2642]], [[TMP2643]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3808]], label [[IF_THEN3810:%.*]], label [[IF_ELSE3811:%.*]]
// SIMD-ONLY0:       if.then3810:
// SIMD-ONLY0-NEXT:    [[TMP2644:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2644]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3812:%.*]]
// SIMD-ONLY0:       if.else3811:
// SIMD-ONLY0-NEXT:    [[TMP2645:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2645]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3812]]
// SIMD-ONLY0:       if.end3812:
// SIMD-ONLY0-NEXT:    [[TMP2646:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2647:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3813:%.*]] = icmp eq i32 [[TMP2646]], [[TMP2647]]
// SIMD-ONLY0-NEXT:    [[CONV3814:%.*]] = zext i1 [[CMP3813]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3814]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2648:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3815:%.*]] = icmp ne i32 [[TMP2648]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3815]], label [[IF_THEN3816:%.*]], label [[IF_END3817:%.*]]
// SIMD-ONLY0:       if.then3816:
// SIMD-ONLY0-NEXT:    [[TMP2649:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2649]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3817]]
// SIMD-ONLY0:       if.end3817:
// SIMD-ONLY0-NEXT:    [[TMP2650:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2651:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3818:%.*]] = icmp eq i32 [[TMP2650]], [[TMP2651]]
// SIMD-ONLY0-NEXT:    [[CONV3819:%.*]] = zext i1 [[CMP3818]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3819]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2652:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3820:%.*]] = icmp ne i32 [[TMP2652]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3820]], label [[IF_THEN3821:%.*]], label [[IF_END3822:%.*]]
// SIMD-ONLY0:       if.then3821:
// SIMD-ONLY0-NEXT:    [[TMP2653:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2653]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3822]]
// SIMD-ONLY0:       if.end3822:
// SIMD-ONLY0-NEXT:    [[TMP2654:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2655:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3823:%.*]] = icmp eq i32 [[TMP2654]], [[TMP2655]]
// SIMD-ONLY0-NEXT:    [[CONV3824:%.*]] = zext i1 [[CMP3823]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3824]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2656:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3825:%.*]] = icmp ne i32 [[TMP2656]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3825]], label [[IF_THEN3826:%.*]], label [[IF_ELSE3827:%.*]]
// SIMD-ONLY0:       if.then3826:
// SIMD-ONLY0-NEXT:    [[TMP2657:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2657]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3828:%.*]]
// SIMD-ONLY0:       if.else3827:
// SIMD-ONLY0-NEXT:    [[TMP2658:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2658]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3828]]
// SIMD-ONLY0:       if.end3828:
// SIMD-ONLY0-NEXT:    [[TMP2659:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2660:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP3829:%.*]] = icmp eq i32 [[TMP2659]], [[TMP2660]]
// SIMD-ONLY0-NEXT:    [[CONV3830:%.*]] = zext i1 [[CMP3829]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV3830]], ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2661:%.*]] = load i32, ptr [[UIR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL3831:%.*]] = icmp ne i32 [[TMP2661]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3831]], label [[IF_THEN3832:%.*]], label [[IF_ELSE3833:%.*]]
// SIMD-ONLY0:       if.then3832:
// SIMD-ONLY0-NEXT:    [[TMP2662:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2662]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3834:%.*]]
// SIMD-ONLY0:       if.else3833:
// SIMD-ONLY0-NEXT:    [[TMP2663:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP2663]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END3834]]
// SIMD-ONLY0:       if.end3834:
// SIMD-ONLY0-NEXT:    [[TMP2664:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2664]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2665:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2666:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3835:%.*]] = icmp sgt i64 [[TMP2665]], [[TMP2666]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3835]], label [[IF_THEN3837:%.*]], label [[IF_END3838:%.*]]
// SIMD-ONLY0:       if.then3837:
// SIMD-ONLY0-NEXT:    [[TMP2667:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2667]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3838]]
// SIMD-ONLY0:       if.end3838:
// SIMD-ONLY0-NEXT:    [[TMP2668:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2668]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2669:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2670:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3839:%.*]] = icmp sgt i64 [[TMP2669]], [[TMP2670]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3839]], label [[IF_THEN3841:%.*]], label [[IF_END3842:%.*]]
// SIMD-ONLY0:       if.then3841:
// SIMD-ONLY0-NEXT:    [[TMP2671:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2671]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3842]]
// SIMD-ONLY0:       if.end3842:
// SIMD-ONLY0-NEXT:    [[TMP2672:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2672]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2673:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2674:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3843:%.*]] = icmp slt i64 [[TMP2673]], [[TMP2674]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3843]], label [[IF_THEN3845:%.*]], label [[IF_END3846:%.*]]
// SIMD-ONLY0:       if.then3845:
// SIMD-ONLY0-NEXT:    [[TMP2675:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2675]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3846]]
// SIMD-ONLY0:       if.end3846:
// SIMD-ONLY0-NEXT:    [[TMP2676:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2676]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2677:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2678:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3847:%.*]] = icmp slt i64 [[TMP2677]], [[TMP2678]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3847]], label [[IF_THEN3849:%.*]], label [[IF_END3850:%.*]]
// SIMD-ONLY0:       if.then3849:
// SIMD-ONLY0-NEXT:    [[TMP2679:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2679]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3850]]
// SIMD-ONLY0:       if.end3850:
// SIMD-ONLY0-NEXT:    [[TMP2680:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2680]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2681:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2682:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3851:%.*]] = icmp eq i64 [[TMP2681]], [[TMP2682]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3851]], label [[IF_THEN3853:%.*]], label [[IF_END3854:%.*]]
// SIMD-ONLY0:       if.then3853:
// SIMD-ONLY0-NEXT:    [[TMP2683:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2683]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3854]]
// SIMD-ONLY0:       if.end3854:
// SIMD-ONLY0-NEXT:    [[TMP2684:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2684]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2685:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2686:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3855:%.*]] = icmp eq i64 [[TMP2685]], [[TMP2686]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3855]], label [[IF_THEN3857:%.*]], label [[IF_END3858:%.*]]
// SIMD-ONLY0:       if.then3857:
// SIMD-ONLY0-NEXT:    [[TMP2687:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2687]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3858]]
// SIMD-ONLY0:       if.end3858:
// SIMD-ONLY0-NEXT:    [[TMP2688:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2689:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3859:%.*]] = icmp sgt i64 [[TMP2688]], [[TMP2689]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3859]], label [[IF_THEN3861:%.*]], label [[IF_END3862:%.*]]
// SIMD-ONLY0:       if.then3861:
// SIMD-ONLY0-NEXT:    [[TMP2690:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2690]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3862]]
// SIMD-ONLY0:       if.end3862:
// SIMD-ONLY0-NEXT:    [[TMP2691:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2691]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2692:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2693:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3863:%.*]] = icmp sgt i64 [[TMP2692]], [[TMP2693]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3863]], label [[IF_THEN3865:%.*]], label [[IF_END3866:%.*]]
// SIMD-ONLY0:       if.then3865:
// SIMD-ONLY0-NEXT:    [[TMP2694:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2694]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3866]]
// SIMD-ONLY0:       if.end3866:
// SIMD-ONLY0-NEXT:    [[TMP2695:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2695]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2696:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2697:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3867:%.*]] = icmp slt i64 [[TMP2696]], [[TMP2697]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3867]], label [[IF_THEN3869:%.*]], label [[IF_END3870:%.*]]
// SIMD-ONLY0:       if.then3869:
// SIMD-ONLY0-NEXT:    [[TMP2698:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2698]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3870]]
// SIMD-ONLY0:       if.end3870:
// SIMD-ONLY0-NEXT:    [[TMP2699:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2699]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2700:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2701:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3871:%.*]] = icmp slt i64 [[TMP2700]], [[TMP2701]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3871]], label [[IF_THEN3873:%.*]], label [[IF_END3874:%.*]]
// SIMD-ONLY0:       if.then3873:
// SIMD-ONLY0-NEXT:    [[TMP2702:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2702]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3874]]
// SIMD-ONLY0:       if.end3874:
// SIMD-ONLY0-NEXT:    [[TMP2703:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2703]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2704:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2705:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3875:%.*]] = icmp eq i64 [[TMP2704]], [[TMP2705]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3875]], label [[IF_THEN3877:%.*]], label [[IF_END3878:%.*]]
// SIMD-ONLY0:       if.then3877:
// SIMD-ONLY0-NEXT:    [[TMP2706:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2706]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3878]]
// SIMD-ONLY0:       if.end3878:
// SIMD-ONLY0-NEXT:    [[TMP2707:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2707]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2708:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2709:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3879:%.*]] = icmp eq i64 [[TMP2708]], [[TMP2709]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3879]], label [[IF_THEN3881:%.*]], label [[IF_END3882:%.*]]
// SIMD-ONLY0:       if.then3881:
// SIMD-ONLY0-NEXT:    [[TMP2710:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2710]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3882]]
// SIMD-ONLY0:       if.end3882:
// SIMD-ONLY0-NEXT:    [[TMP2711:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2711]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2712:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2713:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3883:%.*]] = icmp eq i64 [[TMP2712]], [[TMP2713]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3883]], label [[IF_THEN3885:%.*]], label [[IF_ELSE3886:%.*]]
// SIMD-ONLY0:       if.then3885:
// SIMD-ONLY0-NEXT:    [[TMP2714:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2714]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3887:%.*]]
// SIMD-ONLY0:       if.else3886:
// SIMD-ONLY0-NEXT:    [[TMP2715:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2715]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3887]]
// SIMD-ONLY0:       if.end3887:
// SIMD-ONLY0-NEXT:    [[TMP2716:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2717:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3888:%.*]] = icmp eq i64 [[TMP2716]], [[TMP2717]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3888]], label [[IF_THEN3890:%.*]], label [[IF_ELSE3891:%.*]]
// SIMD-ONLY0:       if.then3890:
// SIMD-ONLY0-NEXT:    [[TMP2718:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2718]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3892:%.*]]
// SIMD-ONLY0:       if.else3891:
// SIMD-ONLY0-NEXT:    [[TMP2719:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2719]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3892]]
// SIMD-ONLY0:       if.end3892:
// SIMD-ONLY0-NEXT:    [[TMP2720:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2721:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3893:%.*]] = icmp eq i64 [[TMP2720]], [[TMP2721]]
// SIMD-ONLY0-NEXT:    [[CONV3894:%.*]] = zext i1 [[CMP3893]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3895:%.*]] = sext i32 [[CONV3894]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3895]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2722:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3896:%.*]] = icmp ne i64 [[TMP2722]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3896]], label [[IF_THEN3897:%.*]], label [[IF_END3898:%.*]]
// SIMD-ONLY0:       if.then3897:
// SIMD-ONLY0-NEXT:    [[TMP2723:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2723]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3898]]
// SIMD-ONLY0:       if.end3898:
// SIMD-ONLY0-NEXT:    [[TMP2724:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2725:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3899:%.*]] = icmp eq i64 [[TMP2724]], [[TMP2725]]
// SIMD-ONLY0-NEXT:    [[CONV3900:%.*]] = zext i1 [[CMP3899]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3901:%.*]] = sext i32 [[CONV3900]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3901]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2726:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3902:%.*]] = icmp ne i64 [[TMP2726]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3902]], label [[IF_THEN3903:%.*]], label [[IF_END3904:%.*]]
// SIMD-ONLY0:       if.then3903:
// SIMD-ONLY0-NEXT:    [[TMP2727:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2727]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3904]]
// SIMD-ONLY0:       if.end3904:
// SIMD-ONLY0-NEXT:    [[TMP2728:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2729:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3905:%.*]] = icmp eq i64 [[TMP2728]], [[TMP2729]]
// SIMD-ONLY0-NEXT:    [[CONV3906:%.*]] = zext i1 [[CMP3905]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3907:%.*]] = sext i32 [[CONV3906]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3907]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2730:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3908:%.*]] = icmp ne i64 [[TMP2730]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3908]], label [[IF_THEN3909:%.*]], label [[IF_ELSE3910:%.*]]
// SIMD-ONLY0:       if.then3909:
// SIMD-ONLY0-NEXT:    [[TMP2731:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2731]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3911:%.*]]
// SIMD-ONLY0:       if.else3910:
// SIMD-ONLY0-NEXT:    [[TMP2732:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2732]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3911]]
// SIMD-ONLY0:       if.end3911:
// SIMD-ONLY0-NEXT:    [[TMP2733:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2734:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3912:%.*]] = icmp eq i64 [[TMP2733]], [[TMP2734]]
// SIMD-ONLY0-NEXT:    [[CONV3913:%.*]] = zext i1 [[CMP3912]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3914:%.*]] = sext i32 [[CONV3913]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3914]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2735:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3915:%.*]] = icmp ne i64 [[TMP2735]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3915]], label [[IF_THEN3916:%.*]], label [[IF_ELSE3917:%.*]]
// SIMD-ONLY0:       if.then3916:
// SIMD-ONLY0-NEXT:    [[TMP2736:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2736]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3918:%.*]]
// SIMD-ONLY0:       if.else3917:
// SIMD-ONLY0-NEXT:    [[TMP2737:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2737]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3918]]
// SIMD-ONLY0:       if.end3918:
// SIMD-ONLY0-NEXT:    [[TMP2738:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2738]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2739:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2740:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3919:%.*]] = icmp sgt i64 [[TMP2739]], [[TMP2740]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3919]], label [[IF_THEN3921:%.*]], label [[IF_END3922:%.*]]
// SIMD-ONLY0:       if.then3921:
// SIMD-ONLY0-NEXT:    [[TMP2741:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2741]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3922]]
// SIMD-ONLY0:       if.end3922:
// SIMD-ONLY0-NEXT:    [[TMP2742:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2742]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2743:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2744:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3923:%.*]] = icmp sgt i64 [[TMP2743]], [[TMP2744]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3923]], label [[IF_THEN3925:%.*]], label [[IF_END3926:%.*]]
// SIMD-ONLY0:       if.then3925:
// SIMD-ONLY0-NEXT:    [[TMP2745:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2745]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3926]]
// SIMD-ONLY0:       if.end3926:
// SIMD-ONLY0-NEXT:    [[TMP2746:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2746]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2747:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2748:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3927:%.*]] = icmp slt i64 [[TMP2747]], [[TMP2748]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3927]], label [[IF_THEN3929:%.*]], label [[IF_END3930:%.*]]
// SIMD-ONLY0:       if.then3929:
// SIMD-ONLY0-NEXT:    [[TMP2749:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2749]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3930]]
// SIMD-ONLY0:       if.end3930:
// SIMD-ONLY0-NEXT:    [[TMP2750:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2750]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2751:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2752:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3931:%.*]] = icmp slt i64 [[TMP2751]], [[TMP2752]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3931]], label [[IF_THEN3933:%.*]], label [[IF_END3934:%.*]]
// SIMD-ONLY0:       if.then3933:
// SIMD-ONLY0-NEXT:    [[TMP2753:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2753]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3934]]
// SIMD-ONLY0:       if.end3934:
// SIMD-ONLY0-NEXT:    [[TMP2754:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2754]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2755:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2756:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3935:%.*]] = icmp eq i64 [[TMP2755]], [[TMP2756]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3935]], label [[IF_THEN3937:%.*]], label [[IF_END3938:%.*]]
// SIMD-ONLY0:       if.then3937:
// SIMD-ONLY0-NEXT:    [[TMP2757:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2757]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3938]]
// SIMD-ONLY0:       if.end3938:
// SIMD-ONLY0-NEXT:    [[TMP2758:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2758]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2759:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2760:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3939:%.*]] = icmp eq i64 [[TMP2759]], [[TMP2760]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3939]], label [[IF_THEN3941:%.*]], label [[IF_END3942:%.*]]
// SIMD-ONLY0:       if.then3941:
// SIMD-ONLY0-NEXT:    [[TMP2761:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2761]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3942]]
// SIMD-ONLY0:       if.end3942:
// SIMD-ONLY0-NEXT:    [[TMP2762:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2763:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3943:%.*]] = icmp sgt i64 [[TMP2762]], [[TMP2763]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3943]], label [[IF_THEN3945:%.*]], label [[IF_END3946:%.*]]
// SIMD-ONLY0:       if.then3945:
// SIMD-ONLY0-NEXT:    [[TMP2764:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2764]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3946]]
// SIMD-ONLY0:       if.end3946:
// SIMD-ONLY0-NEXT:    [[TMP2765:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2765]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2766:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2767:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3947:%.*]] = icmp sgt i64 [[TMP2766]], [[TMP2767]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3947]], label [[IF_THEN3949:%.*]], label [[IF_END3950:%.*]]
// SIMD-ONLY0:       if.then3949:
// SIMD-ONLY0-NEXT:    [[TMP2768:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2768]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3950]]
// SIMD-ONLY0:       if.end3950:
// SIMD-ONLY0-NEXT:    [[TMP2769:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2769]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2770:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2771:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3951:%.*]] = icmp slt i64 [[TMP2770]], [[TMP2771]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3951]], label [[IF_THEN3953:%.*]], label [[IF_END3954:%.*]]
// SIMD-ONLY0:       if.then3953:
// SIMD-ONLY0-NEXT:    [[TMP2772:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2772]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3954]]
// SIMD-ONLY0:       if.end3954:
// SIMD-ONLY0-NEXT:    [[TMP2773:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2773]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2774:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2775:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3955:%.*]] = icmp slt i64 [[TMP2774]], [[TMP2775]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3955]], label [[IF_THEN3957:%.*]], label [[IF_END3958:%.*]]
// SIMD-ONLY0:       if.then3957:
// SIMD-ONLY0-NEXT:    [[TMP2776:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2776]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3958]]
// SIMD-ONLY0:       if.end3958:
// SIMD-ONLY0-NEXT:    [[TMP2777:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2777]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2778:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2779:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3959:%.*]] = icmp eq i64 [[TMP2778]], [[TMP2779]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3959]], label [[IF_THEN3961:%.*]], label [[IF_END3962:%.*]]
// SIMD-ONLY0:       if.then3961:
// SIMD-ONLY0-NEXT:    [[TMP2780:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2780]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3962]]
// SIMD-ONLY0:       if.end3962:
// SIMD-ONLY0-NEXT:    [[TMP2781:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2781]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2782:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2783:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3963:%.*]] = icmp eq i64 [[TMP2782]], [[TMP2783]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3963]], label [[IF_THEN3965:%.*]], label [[IF_END3966:%.*]]
// SIMD-ONLY0:       if.then3965:
// SIMD-ONLY0-NEXT:    [[TMP2784:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2784]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3966]]
// SIMD-ONLY0:       if.end3966:
// SIMD-ONLY0-NEXT:    [[TMP2785:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2785]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2786:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2787:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3967:%.*]] = icmp eq i64 [[TMP2786]], [[TMP2787]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3967]], label [[IF_THEN3969:%.*]], label [[IF_ELSE3970:%.*]]
// SIMD-ONLY0:       if.then3969:
// SIMD-ONLY0-NEXT:    [[TMP2788:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2788]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3971:%.*]]
// SIMD-ONLY0:       if.else3970:
// SIMD-ONLY0-NEXT:    [[TMP2789:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2789]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3971]]
// SIMD-ONLY0:       if.end3971:
// SIMD-ONLY0-NEXT:    [[TMP2790:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2791:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3972:%.*]] = icmp eq i64 [[TMP2790]], [[TMP2791]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP3972]], label [[IF_THEN3974:%.*]], label [[IF_ELSE3975:%.*]]
// SIMD-ONLY0:       if.then3974:
// SIMD-ONLY0-NEXT:    [[TMP2792:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2792]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3976:%.*]]
// SIMD-ONLY0:       if.else3975:
// SIMD-ONLY0-NEXT:    [[TMP2793:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2793]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3976]]
// SIMD-ONLY0:       if.end3976:
// SIMD-ONLY0-NEXT:    [[TMP2794:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2795:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3977:%.*]] = icmp eq i64 [[TMP2794]], [[TMP2795]]
// SIMD-ONLY0-NEXT:    [[CONV3978:%.*]] = zext i1 [[CMP3977]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3979:%.*]] = sext i32 [[CONV3978]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3979]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2796:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3980:%.*]] = icmp ne i64 [[TMP2796]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3980]], label [[IF_THEN3981:%.*]], label [[IF_END3982:%.*]]
// SIMD-ONLY0:       if.then3981:
// SIMD-ONLY0-NEXT:    [[TMP2797:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2797]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3982]]
// SIMD-ONLY0:       if.end3982:
// SIMD-ONLY0-NEXT:    [[TMP2798:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2799:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3983:%.*]] = icmp eq i64 [[TMP2798]], [[TMP2799]]
// SIMD-ONLY0-NEXT:    [[CONV3984:%.*]] = zext i1 [[CMP3983]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3985:%.*]] = sext i32 [[CONV3984]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3985]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2800:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3986:%.*]] = icmp ne i64 [[TMP2800]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3986]], label [[IF_THEN3987:%.*]], label [[IF_END3988:%.*]]
// SIMD-ONLY0:       if.then3987:
// SIMD-ONLY0-NEXT:    [[TMP2801:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2801]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3988]]
// SIMD-ONLY0:       if.end3988:
// SIMD-ONLY0-NEXT:    [[TMP2802:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2803:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3989:%.*]] = icmp eq i64 [[TMP2802]], [[TMP2803]]
// SIMD-ONLY0-NEXT:    [[CONV3990:%.*]] = zext i1 [[CMP3989]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3991:%.*]] = sext i32 [[CONV3990]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3991]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2804:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3992:%.*]] = icmp ne i64 [[TMP2804]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3992]], label [[IF_THEN3993:%.*]], label [[IF_ELSE3994:%.*]]
// SIMD-ONLY0:       if.then3993:
// SIMD-ONLY0-NEXT:    [[TMP2805:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2805]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3995:%.*]]
// SIMD-ONLY0:       if.else3994:
// SIMD-ONLY0-NEXT:    [[TMP2806:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2806]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END3995]]
// SIMD-ONLY0:       if.end3995:
// SIMD-ONLY0-NEXT:    [[TMP2807:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2808:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP3996:%.*]] = icmp eq i64 [[TMP2807]], [[TMP2808]]
// SIMD-ONLY0-NEXT:    [[CONV3997:%.*]] = zext i1 [[CMP3996]] to i32
// SIMD-ONLY0-NEXT:    [[CONV3998:%.*]] = sext i32 [[CONV3997]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV3998]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2809:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL3999:%.*]] = icmp ne i64 [[TMP2809]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL3999]], label [[IF_THEN4000:%.*]], label [[IF_ELSE4001:%.*]]
// SIMD-ONLY0:       if.then4000:
// SIMD-ONLY0-NEXT:    [[TMP2810:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2810]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4002:%.*]]
// SIMD-ONLY0:       if.else4001:
// SIMD-ONLY0-NEXT:    [[TMP2811:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2811]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4002]]
// SIMD-ONLY0:       if.end4002:
// SIMD-ONLY0-NEXT:    [[TMP2812:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2812]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2813:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2814:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4003:%.*]] = icmp sgt i64 [[TMP2813]], [[TMP2814]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4003]], label [[IF_THEN4005:%.*]], label [[IF_END4006:%.*]]
// SIMD-ONLY0:       if.then4005:
// SIMD-ONLY0-NEXT:    [[TMP2815:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2815]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4006]]
// SIMD-ONLY0:       if.end4006:
// SIMD-ONLY0-NEXT:    [[TMP2816:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2816]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2817:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2818:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4007:%.*]] = icmp sgt i64 [[TMP2817]], [[TMP2818]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4007]], label [[IF_THEN4009:%.*]], label [[IF_END4010:%.*]]
// SIMD-ONLY0:       if.then4009:
// SIMD-ONLY0-NEXT:    [[TMP2819:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2819]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4010]]
// SIMD-ONLY0:       if.end4010:
// SIMD-ONLY0-NEXT:    [[TMP2820:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2820]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2821:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2822:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4011:%.*]] = icmp slt i64 [[TMP2821]], [[TMP2822]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4011]], label [[IF_THEN4013:%.*]], label [[IF_END4014:%.*]]
// SIMD-ONLY0:       if.then4013:
// SIMD-ONLY0-NEXT:    [[TMP2823:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2823]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4014]]
// SIMD-ONLY0:       if.end4014:
// SIMD-ONLY0-NEXT:    [[TMP2824:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2824]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2825:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2826:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4015:%.*]] = icmp slt i64 [[TMP2825]], [[TMP2826]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4015]], label [[IF_THEN4017:%.*]], label [[IF_END4018:%.*]]
// SIMD-ONLY0:       if.then4017:
// SIMD-ONLY0-NEXT:    [[TMP2827:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2827]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4018]]
// SIMD-ONLY0:       if.end4018:
// SIMD-ONLY0-NEXT:    [[TMP2828:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2828]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2829:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2830:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4019:%.*]] = icmp eq i64 [[TMP2829]], [[TMP2830]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4019]], label [[IF_THEN4021:%.*]], label [[IF_END4022:%.*]]
// SIMD-ONLY0:       if.then4021:
// SIMD-ONLY0-NEXT:    [[TMP2831:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2831]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4022]]
// SIMD-ONLY0:       if.end4022:
// SIMD-ONLY0-NEXT:    [[TMP2832:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2832]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2833:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2834:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4023:%.*]] = icmp eq i64 [[TMP2833]], [[TMP2834]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4023]], label [[IF_THEN4025:%.*]], label [[IF_END4026:%.*]]
// SIMD-ONLY0:       if.then4025:
// SIMD-ONLY0-NEXT:    [[TMP2835:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2835]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4026]]
// SIMD-ONLY0:       if.end4026:
// SIMD-ONLY0-NEXT:    [[TMP2836:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2837:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4027:%.*]] = icmp sgt i64 [[TMP2836]], [[TMP2837]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4027]], label [[IF_THEN4029:%.*]], label [[IF_END4030:%.*]]
// SIMD-ONLY0:       if.then4029:
// SIMD-ONLY0-NEXT:    [[TMP2838:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2838]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4030]]
// SIMD-ONLY0:       if.end4030:
// SIMD-ONLY0-NEXT:    [[TMP2839:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2839]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2840:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2841:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4031:%.*]] = icmp sgt i64 [[TMP2840]], [[TMP2841]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4031]], label [[IF_THEN4033:%.*]], label [[IF_END4034:%.*]]
// SIMD-ONLY0:       if.then4033:
// SIMD-ONLY0-NEXT:    [[TMP2842:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2842]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4034]]
// SIMD-ONLY0:       if.end4034:
// SIMD-ONLY0-NEXT:    [[TMP2843:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2843]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2844:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2845:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4035:%.*]] = icmp slt i64 [[TMP2844]], [[TMP2845]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4035]], label [[IF_THEN4037:%.*]], label [[IF_END4038:%.*]]
// SIMD-ONLY0:       if.then4037:
// SIMD-ONLY0-NEXT:    [[TMP2846:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2846]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4038]]
// SIMD-ONLY0:       if.end4038:
// SIMD-ONLY0-NEXT:    [[TMP2847:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2847]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2848:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2849:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4039:%.*]] = icmp slt i64 [[TMP2848]], [[TMP2849]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4039]], label [[IF_THEN4041:%.*]], label [[IF_END4042:%.*]]
// SIMD-ONLY0:       if.then4041:
// SIMD-ONLY0-NEXT:    [[TMP2850:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2850]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4042]]
// SIMD-ONLY0:       if.end4042:
// SIMD-ONLY0-NEXT:    [[TMP2851:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2851]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2852:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2853:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4043:%.*]] = icmp eq i64 [[TMP2852]], [[TMP2853]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4043]], label [[IF_THEN4045:%.*]], label [[IF_END4046:%.*]]
// SIMD-ONLY0:       if.then4045:
// SIMD-ONLY0-NEXT:    [[TMP2854:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2854]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4046]]
// SIMD-ONLY0:       if.end4046:
// SIMD-ONLY0-NEXT:    [[TMP2855:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2855]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2856:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2857:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4047:%.*]] = icmp eq i64 [[TMP2856]], [[TMP2857]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4047]], label [[IF_THEN4049:%.*]], label [[IF_END4050:%.*]]
// SIMD-ONLY0:       if.then4049:
// SIMD-ONLY0-NEXT:    [[TMP2858:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2858]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4050]]
// SIMD-ONLY0:       if.end4050:
// SIMD-ONLY0-NEXT:    [[TMP2859:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2859]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2860:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2861:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4051:%.*]] = icmp eq i64 [[TMP2860]], [[TMP2861]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4051]], label [[IF_THEN4053:%.*]], label [[IF_ELSE4054:%.*]]
// SIMD-ONLY0:       if.then4053:
// SIMD-ONLY0-NEXT:    [[TMP2862:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2862]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4055:%.*]]
// SIMD-ONLY0:       if.else4054:
// SIMD-ONLY0-NEXT:    [[TMP2863:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2863]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4055]]
// SIMD-ONLY0:       if.end4055:
// SIMD-ONLY0-NEXT:    [[TMP2864:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2865:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4056:%.*]] = icmp eq i64 [[TMP2864]], [[TMP2865]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4056]], label [[IF_THEN4058:%.*]], label [[IF_ELSE4059:%.*]]
// SIMD-ONLY0:       if.then4058:
// SIMD-ONLY0-NEXT:    [[TMP2866:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2866]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4060:%.*]]
// SIMD-ONLY0:       if.else4059:
// SIMD-ONLY0-NEXT:    [[TMP2867:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2867]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4060]]
// SIMD-ONLY0:       if.end4060:
// SIMD-ONLY0-NEXT:    [[TMP2868:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2869:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4061:%.*]] = icmp eq i64 [[TMP2868]], [[TMP2869]]
// SIMD-ONLY0-NEXT:    [[CONV4062:%.*]] = zext i1 [[CMP4061]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4063:%.*]] = sext i32 [[CONV4062]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4063]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2870:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4064:%.*]] = icmp ne i64 [[TMP2870]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4064]], label [[IF_THEN4065:%.*]], label [[IF_END4066:%.*]]
// SIMD-ONLY0:       if.then4065:
// SIMD-ONLY0-NEXT:    [[TMP2871:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2871]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4066]]
// SIMD-ONLY0:       if.end4066:
// SIMD-ONLY0-NEXT:    [[TMP2872:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2873:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4067:%.*]] = icmp eq i64 [[TMP2872]], [[TMP2873]]
// SIMD-ONLY0-NEXT:    [[CONV4068:%.*]] = zext i1 [[CMP4067]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4069:%.*]] = sext i32 [[CONV4068]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4069]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2874:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4070:%.*]] = icmp ne i64 [[TMP2874]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4070]], label [[IF_THEN4071:%.*]], label [[IF_END4072:%.*]]
// SIMD-ONLY0:       if.then4071:
// SIMD-ONLY0-NEXT:    [[TMP2875:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2875]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4072]]
// SIMD-ONLY0:       if.end4072:
// SIMD-ONLY0-NEXT:    [[TMP2876:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2877:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4073:%.*]] = icmp eq i64 [[TMP2876]], [[TMP2877]]
// SIMD-ONLY0-NEXT:    [[CONV4074:%.*]] = zext i1 [[CMP4073]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4075:%.*]] = sext i32 [[CONV4074]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4075]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2878:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4076:%.*]] = icmp ne i64 [[TMP2878]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4076]], label [[IF_THEN4077:%.*]], label [[IF_ELSE4078:%.*]]
// SIMD-ONLY0:       if.then4077:
// SIMD-ONLY0-NEXT:    [[TMP2879:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2879]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4079:%.*]]
// SIMD-ONLY0:       if.else4078:
// SIMD-ONLY0-NEXT:    [[TMP2880:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2880]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4079]]
// SIMD-ONLY0:       if.end4079:
// SIMD-ONLY0-NEXT:    [[TMP2881:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2882:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4080:%.*]] = icmp eq i64 [[TMP2881]], [[TMP2882]]
// SIMD-ONLY0-NEXT:    [[CONV4081:%.*]] = zext i1 [[CMP4080]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4082:%.*]] = sext i32 [[CONV4081]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4082]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2883:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4083:%.*]] = icmp ne i64 [[TMP2883]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4083]], label [[IF_THEN4084:%.*]], label [[IF_ELSE4085:%.*]]
// SIMD-ONLY0:       if.then4084:
// SIMD-ONLY0-NEXT:    [[TMP2884:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2884]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4086:%.*]]
// SIMD-ONLY0:       if.else4085:
// SIMD-ONLY0-NEXT:    [[TMP2885:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2885]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4086]]
// SIMD-ONLY0:       if.end4086:
// SIMD-ONLY0-NEXT:    [[TMP2886:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2886]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2887:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2888:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4087:%.*]] = icmp sgt i64 [[TMP2887]], [[TMP2888]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4087]], label [[IF_THEN4089:%.*]], label [[IF_END4090:%.*]]
// SIMD-ONLY0:       if.then4089:
// SIMD-ONLY0-NEXT:    [[TMP2889:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2889]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4090]]
// SIMD-ONLY0:       if.end4090:
// SIMD-ONLY0-NEXT:    [[TMP2890:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2890]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2891:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2892:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4091:%.*]] = icmp sgt i64 [[TMP2891]], [[TMP2892]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4091]], label [[IF_THEN4093:%.*]], label [[IF_END4094:%.*]]
// SIMD-ONLY0:       if.then4093:
// SIMD-ONLY0-NEXT:    [[TMP2893:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2893]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4094]]
// SIMD-ONLY0:       if.end4094:
// SIMD-ONLY0-NEXT:    [[TMP2894:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2894]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2895:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2896:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4095:%.*]] = icmp slt i64 [[TMP2895]], [[TMP2896]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4095]], label [[IF_THEN4097:%.*]], label [[IF_END4098:%.*]]
// SIMD-ONLY0:       if.then4097:
// SIMD-ONLY0-NEXT:    [[TMP2897:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2897]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4098]]
// SIMD-ONLY0:       if.end4098:
// SIMD-ONLY0-NEXT:    [[TMP2898:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2898]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2899:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2900:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4099:%.*]] = icmp slt i64 [[TMP2899]], [[TMP2900]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4099]], label [[IF_THEN4101:%.*]], label [[IF_END4102:%.*]]
// SIMD-ONLY0:       if.then4101:
// SIMD-ONLY0-NEXT:    [[TMP2901:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2901]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4102]]
// SIMD-ONLY0:       if.end4102:
// SIMD-ONLY0-NEXT:    [[TMP2902:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2902]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2903:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2904:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4103:%.*]] = icmp eq i64 [[TMP2903]], [[TMP2904]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4103]], label [[IF_THEN4105:%.*]], label [[IF_END4106:%.*]]
// SIMD-ONLY0:       if.then4105:
// SIMD-ONLY0-NEXT:    [[TMP2905:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2905]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4106]]
// SIMD-ONLY0:       if.end4106:
// SIMD-ONLY0-NEXT:    [[TMP2906:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2906]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2907:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2908:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4107:%.*]] = icmp eq i64 [[TMP2907]], [[TMP2908]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4107]], label [[IF_THEN4109:%.*]], label [[IF_END4110:%.*]]
// SIMD-ONLY0:       if.then4109:
// SIMD-ONLY0-NEXT:    [[TMP2909:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2909]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4110]]
// SIMD-ONLY0:       if.end4110:
// SIMD-ONLY0-NEXT:    [[TMP2910:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2911:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4111:%.*]] = icmp sgt i64 [[TMP2910]], [[TMP2911]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4111]], label [[IF_THEN4113:%.*]], label [[IF_END4114:%.*]]
// SIMD-ONLY0:       if.then4113:
// SIMD-ONLY0-NEXT:    [[TMP2912:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2912]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4114]]
// SIMD-ONLY0:       if.end4114:
// SIMD-ONLY0-NEXT:    [[TMP2913:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2913]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2914:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2915:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4115:%.*]] = icmp sgt i64 [[TMP2914]], [[TMP2915]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4115]], label [[IF_THEN4117:%.*]], label [[IF_END4118:%.*]]
// SIMD-ONLY0:       if.then4117:
// SIMD-ONLY0-NEXT:    [[TMP2916:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2916]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4118]]
// SIMD-ONLY0:       if.end4118:
// SIMD-ONLY0-NEXT:    [[TMP2917:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2917]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2918:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2919:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4119:%.*]] = icmp slt i64 [[TMP2918]], [[TMP2919]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4119]], label [[IF_THEN4121:%.*]], label [[IF_END4122:%.*]]
// SIMD-ONLY0:       if.then4121:
// SIMD-ONLY0-NEXT:    [[TMP2920:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2920]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4122]]
// SIMD-ONLY0:       if.end4122:
// SIMD-ONLY0-NEXT:    [[TMP2921:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2921]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2922:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2923:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4123:%.*]] = icmp slt i64 [[TMP2922]], [[TMP2923]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4123]], label [[IF_THEN4125:%.*]], label [[IF_END4126:%.*]]
// SIMD-ONLY0:       if.then4125:
// SIMD-ONLY0-NEXT:    [[TMP2924:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2924]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4126]]
// SIMD-ONLY0:       if.end4126:
// SIMD-ONLY0-NEXT:    [[TMP2925:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2925]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2926:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2927:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4127:%.*]] = icmp eq i64 [[TMP2926]], [[TMP2927]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4127]], label [[IF_THEN4129:%.*]], label [[IF_END4130:%.*]]
// SIMD-ONLY0:       if.then4129:
// SIMD-ONLY0-NEXT:    [[TMP2928:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2928]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4130]]
// SIMD-ONLY0:       if.end4130:
// SIMD-ONLY0-NEXT:    [[TMP2929:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2929]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2930:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2931:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4131:%.*]] = icmp eq i64 [[TMP2930]], [[TMP2931]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4131]], label [[IF_THEN4133:%.*]], label [[IF_END4134:%.*]]
// SIMD-ONLY0:       if.then4133:
// SIMD-ONLY0-NEXT:    [[TMP2932:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2932]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4134]]
// SIMD-ONLY0:       if.end4134:
// SIMD-ONLY0-NEXT:    [[TMP2933:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2933]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2934:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2935:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4135:%.*]] = icmp eq i64 [[TMP2934]], [[TMP2935]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4135]], label [[IF_THEN4137:%.*]], label [[IF_ELSE4138:%.*]]
// SIMD-ONLY0:       if.then4137:
// SIMD-ONLY0-NEXT:    [[TMP2936:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2936]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4139:%.*]]
// SIMD-ONLY0:       if.else4138:
// SIMD-ONLY0-NEXT:    [[TMP2937:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2937]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4139]]
// SIMD-ONLY0:       if.end4139:
// SIMD-ONLY0-NEXT:    [[TMP2938:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2939:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4140:%.*]] = icmp eq i64 [[TMP2938]], [[TMP2939]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4140]], label [[IF_THEN4142:%.*]], label [[IF_ELSE4143:%.*]]
// SIMD-ONLY0:       if.then4142:
// SIMD-ONLY0-NEXT:    [[TMP2940:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2940]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4144:%.*]]
// SIMD-ONLY0:       if.else4143:
// SIMD-ONLY0-NEXT:    [[TMP2941:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2941]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4144]]
// SIMD-ONLY0:       if.end4144:
// SIMD-ONLY0-NEXT:    [[TMP2942:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2943:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4145:%.*]] = icmp eq i64 [[TMP2942]], [[TMP2943]]
// SIMD-ONLY0-NEXT:    [[CONV4146:%.*]] = zext i1 [[CMP4145]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4147:%.*]] = sext i32 [[CONV4146]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4147]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2944:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4148:%.*]] = icmp ne i64 [[TMP2944]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4148]], label [[IF_THEN4149:%.*]], label [[IF_END4150:%.*]]
// SIMD-ONLY0:       if.then4149:
// SIMD-ONLY0-NEXT:    [[TMP2945:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2945]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4150]]
// SIMD-ONLY0:       if.end4150:
// SIMD-ONLY0-NEXT:    [[TMP2946:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2947:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4151:%.*]] = icmp eq i64 [[TMP2946]], [[TMP2947]]
// SIMD-ONLY0-NEXT:    [[CONV4152:%.*]] = zext i1 [[CMP4151]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4153:%.*]] = sext i32 [[CONV4152]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4153]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2948:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4154:%.*]] = icmp ne i64 [[TMP2948]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4154]], label [[IF_THEN4155:%.*]], label [[IF_END4156:%.*]]
// SIMD-ONLY0:       if.then4155:
// SIMD-ONLY0-NEXT:    [[TMP2949:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2949]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4156]]
// SIMD-ONLY0:       if.end4156:
// SIMD-ONLY0-NEXT:    [[TMP2950:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2951:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4157:%.*]] = icmp eq i64 [[TMP2950]], [[TMP2951]]
// SIMD-ONLY0-NEXT:    [[CONV4158:%.*]] = zext i1 [[CMP4157]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4159:%.*]] = sext i32 [[CONV4158]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4159]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2952:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4160:%.*]] = icmp ne i64 [[TMP2952]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4160]], label [[IF_THEN4161:%.*]], label [[IF_ELSE4162:%.*]]
// SIMD-ONLY0:       if.then4161:
// SIMD-ONLY0-NEXT:    [[TMP2953:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2953]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4163:%.*]]
// SIMD-ONLY0:       if.else4162:
// SIMD-ONLY0-NEXT:    [[TMP2954:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2954]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4163]]
// SIMD-ONLY0:       if.end4163:
// SIMD-ONLY0-NEXT:    [[TMP2955:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2956:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4164:%.*]] = icmp eq i64 [[TMP2955]], [[TMP2956]]
// SIMD-ONLY0-NEXT:    [[CONV4165:%.*]] = zext i1 [[CMP4164]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4166:%.*]] = sext i32 [[CONV4165]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4166]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2957:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4167:%.*]] = icmp ne i64 [[TMP2957]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4167]], label [[IF_THEN4168:%.*]], label [[IF_ELSE4169:%.*]]
// SIMD-ONLY0:       if.then4168:
// SIMD-ONLY0-NEXT:    [[TMP2958:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2958]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4170:%.*]]
// SIMD-ONLY0:       if.else4169:
// SIMD-ONLY0-NEXT:    [[TMP2959:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2959]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4170]]
// SIMD-ONLY0:       if.end4170:
// SIMD-ONLY0-NEXT:    [[TMP2960:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2960]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2961:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2962:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4171:%.*]] = icmp sgt i64 [[TMP2961]], [[TMP2962]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4171]], label [[IF_THEN4173:%.*]], label [[IF_END4174:%.*]]
// SIMD-ONLY0:       if.then4173:
// SIMD-ONLY0-NEXT:    [[TMP2963:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2963]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4174]]
// SIMD-ONLY0:       if.end4174:
// SIMD-ONLY0-NEXT:    [[TMP2964:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2964]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2965:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2966:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4175:%.*]] = icmp sgt i64 [[TMP2965]], [[TMP2966]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4175]], label [[IF_THEN4177:%.*]], label [[IF_END4178:%.*]]
// SIMD-ONLY0:       if.then4177:
// SIMD-ONLY0-NEXT:    [[TMP2967:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2967]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4178]]
// SIMD-ONLY0:       if.end4178:
// SIMD-ONLY0-NEXT:    [[TMP2968:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2968]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2969:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2970:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4179:%.*]] = icmp slt i64 [[TMP2969]], [[TMP2970]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4179]], label [[IF_THEN4181:%.*]], label [[IF_END4182:%.*]]
// SIMD-ONLY0:       if.then4181:
// SIMD-ONLY0-NEXT:    [[TMP2971:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2971]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4182]]
// SIMD-ONLY0:       if.end4182:
// SIMD-ONLY0-NEXT:    [[TMP2972:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2972]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2973:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2974:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4183:%.*]] = icmp slt i64 [[TMP2973]], [[TMP2974]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4183]], label [[IF_THEN4185:%.*]], label [[IF_END4186:%.*]]
// SIMD-ONLY0:       if.then4185:
// SIMD-ONLY0-NEXT:    [[TMP2975:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2975]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4186]]
// SIMD-ONLY0:       if.end4186:
// SIMD-ONLY0-NEXT:    [[TMP2976:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2976]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2977:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2978:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4187:%.*]] = icmp eq i64 [[TMP2977]], [[TMP2978]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4187]], label [[IF_THEN4189:%.*]], label [[IF_END4190:%.*]]
// SIMD-ONLY0:       if.then4189:
// SIMD-ONLY0-NEXT:    [[TMP2979:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2979]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4190]]
// SIMD-ONLY0:       if.end4190:
// SIMD-ONLY0-NEXT:    [[TMP2980:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2980]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2981:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2982:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4191:%.*]] = icmp eq i64 [[TMP2981]], [[TMP2982]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4191]], label [[IF_THEN4193:%.*]], label [[IF_END4194:%.*]]
// SIMD-ONLY0:       if.then4193:
// SIMD-ONLY0-NEXT:    [[TMP2983:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2983]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4194]]
// SIMD-ONLY0:       if.end4194:
// SIMD-ONLY0-NEXT:    [[TMP2984:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2985:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4195:%.*]] = icmp sgt i64 [[TMP2984]], [[TMP2985]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4195]], label [[IF_THEN4197:%.*]], label [[IF_END4198:%.*]]
// SIMD-ONLY0:       if.then4197:
// SIMD-ONLY0-NEXT:    [[TMP2986:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2986]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4198]]
// SIMD-ONLY0:       if.end4198:
// SIMD-ONLY0-NEXT:    [[TMP2987:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2987]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2988:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2989:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4199:%.*]] = icmp sgt i64 [[TMP2988]], [[TMP2989]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4199]], label [[IF_THEN4201:%.*]], label [[IF_END4202:%.*]]
// SIMD-ONLY0:       if.then4201:
// SIMD-ONLY0-NEXT:    [[TMP2990:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2990]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4202]]
// SIMD-ONLY0:       if.end4202:
// SIMD-ONLY0-NEXT:    [[TMP2991:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2991]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2992:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2993:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4203:%.*]] = icmp slt i64 [[TMP2992]], [[TMP2993]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4203]], label [[IF_THEN4205:%.*]], label [[IF_END4206:%.*]]
// SIMD-ONLY0:       if.then4205:
// SIMD-ONLY0-NEXT:    [[TMP2994:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2994]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4206]]
// SIMD-ONLY0:       if.end4206:
// SIMD-ONLY0-NEXT:    [[TMP2995:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2995]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2996:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2997:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4207:%.*]] = icmp slt i64 [[TMP2996]], [[TMP2997]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4207]], label [[IF_THEN4209:%.*]], label [[IF_END4210:%.*]]
// SIMD-ONLY0:       if.then4209:
// SIMD-ONLY0-NEXT:    [[TMP2998:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2998]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4210]]
// SIMD-ONLY0:       if.end4210:
// SIMD-ONLY0-NEXT:    [[TMP2999:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP2999]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3000:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3001:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4211:%.*]] = icmp eq i64 [[TMP3000]], [[TMP3001]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4211]], label [[IF_THEN4213:%.*]], label [[IF_END4214:%.*]]
// SIMD-ONLY0:       if.then4213:
// SIMD-ONLY0-NEXT:    [[TMP3002:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3002]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4214]]
// SIMD-ONLY0:       if.end4214:
// SIMD-ONLY0-NEXT:    [[TMP3003:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3003]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3004:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3005:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4215:%.*]] = icmp eq i64 [[TMP3004]], [[TMP3005]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4215]], label [[IF_THEN4217:%.*]], label [[IF_END4218:%.*]]
// SIMD-ONLY0:       if.then4217:
// SIMD-ONLY0-NEXT:    [[TMP3006:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3006]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4218]]
// SIMD-ONLY0:       if.end4218:
// SIMD-ONLY0-NEXT:    [[TMP3007:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3007]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3008:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3009:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4219:%.*]] = icmp eq i64 [[TMP3008]], [[TMP3009]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4219]], label [[IF_THEN4221:%.*]], label [[IF_ELSE4222:%.*]]
// SIMD-ONLY0:       if.then4221:
// SIMD-ONLY0-NEXT:    [[TMP3010:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3010]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4223:%.*]]
// SIMD-ONLY0:       if.else4222:
// SIMD-ONLY0-NEXT:    [[TMP3011:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3011]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4223]]
// SIMD-ONLY0:       if.end4223:
// SIMD-ONLY0-NEXT:    [[TMP3012:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3013:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4224:%.*]] = icmp eq i64 [[TMP3012]], [[TMP3013]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4224]], label [[IF_THEN4226:%.*]], label [[IF_ELSE4227:%.*]]
// SIMD-ONLY0:       if.then4226:
// SIMD-ONLY0-NEXT:    [[TMP3014:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3014]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4228:%.*]]
// SIMD-ONLY0:       if.else4227:
// SIMD-ONLY0-NEXT:    [[TMP3015:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3015]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4228]]
// SIMD-ONLY0:       if.end4228:
// SIMD-ONLY0-NEXT:    [[TMP3016:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3017:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4229:%.*]] = icmp eq i64 [[TMP3016]], [[TMP3017]]
// SIMD-ONLY0-NEXT:    [[CONV4230:%.*]] = zext i1 [[CMP4229]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4231:%.*]] = sext i32 [[CONV4230]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4231]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3018:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4232:%.*]] = icmp ne i64 [[TMP3018]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4232]], label [[IF_THEN4233:%.*]], label [[IF_END4234:%.*]]
// SIMD-ONLY0:       if.then4233:
// SIMD-ONLY0-NEXT:    [[TMP3019:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3019]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4234]]
// SIMD-ONLY0:       if.end4234:
// SIMD-ONLY0-NEXT:    [[TMP3020:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3021:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4235:%.*]] = icmp eq i64 [[TMP3020]], [[TMP3021]]
// SIMD-ONLY0-NEXT:    [[CONV4236:%.*]] = zext i1 [[CMP4235]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4237:%.*]] = sext i32 [[CONV4236]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4237]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3022:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4238:%.*]] = icmp ne i64 [[TMP3022]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4238]], label [[IF_THEN4239:%.*]], label [[IF_END4240:%.*]]
// SIMD-ONLY0:       if.then4239:
// SIMD-ONLY0-NEXT:    [[TMP3023:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3023]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4240]]
// SIMD-ONLY0:       if.end4240:
// SIMD-ONLY0-NEXT:    [[TMP3024:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3025:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4241:%.*]] = icmp eq i64 [[TMP3024]], [[TMP3025]]
// SIMD-ONLY0-NEXT:    [[CONV4242:%.*]] = zext i1 [[CMP4241]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4243:%.*]] = sext i32 [[CONV4242]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4243]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3026:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4244:%.*]] = icmp ne i64 [[TMP3026]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4244]], label [[IF_THEN4245:%.*]], label [[IF_ELSE4246:%.*]]
// SIMD-ONLY0:       if.then4245:
// SIMD-ONLY0-NEXT:    [[TMP3027:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3027]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4247:%.*]]
// SIMD-ONLY0:       if.else4246:
// SIMD-ONLY0-NEXT:    [[TMP3028:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3028]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4247]]
// SIMD-ONLY0:       if.end4247:
// SIMD-ONLY0-NEXT:    [[TMP3029:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3030:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4248:%.*]] = icmp eq i64 [[TMP3029]], [[TMP3030]]
// SIMD-ONLY0-NEXT:    [[CONV4249:%.*]] = zext i1 [[CMP4248]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4250:%.*]] = sext i32 [[CONV4249]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4250]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3031:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4251:%.*]] = icmp ne i64 [[TMP3031]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4251]], label [[IF_THEN4252:%.*]], label [[IF_ELSE4253:%.*]]
// SIMD-ONLY0:       if.then4252:
// SIMD-ONLY0-NEXT:    [[TMP3032:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3032]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4254:%.*]]
// SIMD-ONLY0:       if.else4253:
// SIMD-ONLY0-NEXT:    [[TMP3033:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3033]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4254]]
// SIMD-ONLY0:       if.end4254:
// SIMD-ONLY0-NEXT:    [[TMP3034:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3034]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3035:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3036:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4255:%.*]] = icmp sgt i64 [[TMP3035]], [[TMP3036]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4255]], label [[IF_THEN4257:%.*]], label [[IF_END4258:%.*]]
// SIMD-ONLY0:       if.then4257:
// SIMD-ONLY0-NEXT:    [[TMP3037:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3037]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4258]]
// SIMD-ONLY0:       if.end4258:
// SIMD-ONLY0-NEXT:    [[TMP3038:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3038]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3039:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3040:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4259:%.*]] = icmp sgt i64 [[TMP3039]], [[TMP3040]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4259]], label [[IF_THEN4261:%.*]], label [[IF_END4262:%.*]]
// SIMD-ONLY0:       if.then4261:
// SIMD-ONLY0-NEXT:    [[TMP3041:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3041]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4262]]
// SIMD-ONLY0:       if.end4262:
// SIMD-ONLY0-NEXT:    [[TMP3042:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3042]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3043:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3044:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4263:%.*]] = icmp slt i64 [[TMP3043]], [[TMP3044]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4263]], label [[IF_THEN4265:%.*]], label [[IF_END4266:%.*]]
// SIMD-ONLY0:       if.then4265:
// SIMD-ONLY0-NEXT:    [[TMP3045:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3045]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4266]]
// SIMD-ONLY0:       if.end4266:
// SIMD-ONLY0-NEXT:    [[TMP3046:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3046]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3047:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3048:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4267:%.*]] = icmp slt i64 [[TMP3047]], [[TMP3048]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4267]], label [[IF_THEN4269:%.*]], label [[IF_END4270:%.*]]
// SIMD-ONLY0:       if.then4269:
// SIMD-ONLY0-NEXT:    [[TMP3049:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3049]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4270]]
// SIMD-ONLY0:       if.end4270:
// SIMD-ONLY0-NEXT:    [[TMP3050:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3050]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3051:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3052:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4271:%.*]] = icmp eq i64 [[TMP3051]], [[TMP3052]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4271]], label [[IF_THEN4273:%.*]], label [[IF_END4274:%.*]]
// SIMD-ONLY0:       if.then4273:
// SIMD-ONLY0-NEXT:    [[TMP3053:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3053]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4274]]
// SIMD-ONLY0:       if.end4274:
// SIMD-ONLY0-NEXT:    [[TMP3054:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3054]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3055:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3056:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4275:%.*]] = icmp eq i64 [[TMP3055]], [[TMP3056]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4275]], label [[IF_THEN4277:%.*]], label [[IF_END4278:%.*]]
// SIMD-ONLY0:       if.then4277:
// SIMD-ONLY0-NEXT:    [[TMP3057:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3057]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4278]]
// SIMD-ONLY0:       if.end4278:
// SIMD-ONLY0-NEXT:    [[TMP3058:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3059:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4279:%.*]] = icmp sgt i64 [[TMP3058]], [[TMP3059]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4279]], label [[IF_THEN4281:%.*]], label [[IF_END4282:%.*]]
// SIMD-ONLY0:       if.then4281:
// SIMD-ONLY0-NEXT:    [[TMP3060:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3060]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4282]]
// SIMD-ONLY0:       if.end4282:
// SIMD-ONLY0-NEXT:    [[TMP3061:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3061]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3062:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3063:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4283:%.*]] = icmp sgt i64 [[TMP3062]], [[TMP3063]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4283]], label [[IF_THEN4285:%.*]], label [[IF_END4286:%.*]]
// SIMD-ONLY0:       if.then4285:
// SIMD-ONLY0-NEXT:    [[TMP3064:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3064]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4286]]
// SIMD-ONLY0:       if.end4286:
// SIMD-ONLY0-NEXT:    [[TMP3065:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3065]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3066:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3067:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4287:%.*]] = icmp slt i64 [[TMP3066]], [[TMP3067]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4287]], label [[IF_THEN4289:%.*]], label [[IF_END4290:%.*]]
// SIMD-ONLY0:       if.then4289:
// SIMD-ONLY0-NEXT:    [[TMP3068:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3068]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4290]]
// SIMD-ONLY0:       if.end4290:
// SIMD-ONLY0-NEXT:    [[TMP3069:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3069]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3070:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3071:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4291:%.*]] = icmp slt i64 [[TMP3070]], [[TMP3071]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4291]], label [[IF_THEN4293:%.*]], label [[IF_END4294:%.*]]
// SIMD-ONLY0:       if.then4293:
// SIMD-ONLY0-NEXT:    [[TMP3072:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3072]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4294]]
// SIMD-ONLY0:       if.end4294:
// SIMD-ONLY0-NEXT:    [[TMP3073:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3073]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3074:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3075:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4295:%.*]] = icmp eq i64 [[TMP3074]], [[TMP3075]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4295]], label [[IF_THEN4297:%.*]], label [[IF_END4298:%.*]]
// SIMD-ONLY0:       if.then4297:
// SIMD-ONLY0-NEXT:    [[TMP3076:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3076]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4298]]
// SIMD-ONLY0:       if.end4298:
// SIMD-ONLY0-NEXT:    [[TMP3077:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3077]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3078:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3079:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4299:%.*]] = icmp eq i64 [[TMP3078]], [[TMP3079]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4299]], label [[IF_THEN4301:%.*]], label [[IF_END4302:%.*]]
// SIMD-ONLY0:       if.then4301:
// SIMD-ONLY0-NEXT:    [[TMP3080:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3080]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4302]]
// SIMD-ONLY0:       if.end4302:
// SIMD-ONLY0-NEXT:    [[TMP3081:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3081]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3082:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3083:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4303:%.*]] = icmp eq i64 [[TMP3082]], [[TMP3083]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4303]], label [[IF_THEN4305:%.*]], label [[IF_ELSE4306:%.*]]
// SIMD-ONLY0:       if.then4305:
// SIMD-ONLY0-NEXT:    [[TMP3084:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3084]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4307:%.*]]
// SIMD-ONLY0:       if.else4306:
// SIMD-ONLY0-NEXT:    [[TMP3085:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3085]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4307]]
// SIMD-ONLY0:       if.end4307:
// SIMD-ONLY0-NEXT:    [[TMP3086:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3087:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4308:%.*]] = icmp eq i64 [[TMP3086]], [[TMP3087]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4308]], label [[IF_THEN4310:%.*]], label [[IF_ELSE4311:%.*]]
// SIMD-ONLY0:       if.then4310:
// SIMD-ONLY0-NEXT:    [[TMP3088:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3088]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4312:%.*]]
// SIMD-ONLY0:       if.else4311:
// SIMD-ONLY0-NEXT:    [[TMP3089:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3089]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4312]]
// SIMD-ONLY0:       if.end4312:
// SIMD-ONLY0-NEXT:    [[TMP3090:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3091:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4313:%.*]] = icmp eq i64 [[TMP3090]], [[TMP3091]]
// SIMD-ONLY0-NEXT:    [[CONV4314:%.*]] = zext i1 [[CMP4313]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4315:%.*]] = sext i32 [[CONV4314]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4315]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3092:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4316:%.*]] = icmp ne i64 [[TMP3092]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4316]], label [[IF_THEN4317:%.*]], label [[IF_END4318:%.*]]
// SIMD-ONLY0:       if.then4317:
// SIMD-ONLY0-NEXT:    [[TMP3093:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3093]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4318]]
// SIMD-ONLY0:       if.end4318:
// SIMD-ONLY0-NEXT:    [[TMP3094:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3095:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4319:%.*]] = icmp eq i64 [[TMP3094]], [[TMP3095]]
// SIMD-ONLY0-NEXT:    [[CONV4320:%.*]] = zext i1 [[CMP4319]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4321:%.*]] = sext i32 [[CONV4320]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4321]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3096:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4322:%.*]] = icmp ne i64 [[TMP3096]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4322]], label [[IF_THEN4323:%.*]], label [[IF_END4324:%.*]]
// SIMD-ONLY0:       if.then4323:
// SIMD-ONLY0-NEXT:    [[TMP3097:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3097]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4324]]
// SIMD-ONLY0:       if.end4324:
// SIMD-ONLY0-NEXT:    [[TMP3098:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3099:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4325:%.*]] = icmp eq i64 [[TMP3098]], [[TMP3099]]
// SIMD-ONLY0-NEXT:    [[CONV4326:%.*]] = zext i1 [[CMP4325]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4327:%.*]] = sext i32 [[CONV4326]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4327]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3100:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4328:%.*]] = icmp ne i64 [[TMP3100]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4328]], label [[IF_THEN4329:%.*]], label [[IF_ELSE4330:%.*]]
// SIMD-ONLY0:       if.then4329:
// SIMD-ONLY0-NEXT:    [[TMP3101:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3101]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4331:%.*]]
// SIMD-ONLY0:       if.else4330:
// SIMD-ONLY0-NEXT:    [[TMP3102:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3102]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4331]]
// SIMD-ONLY0:       if.end4331:
// SIMD-ONLY0-NEXT:    [[TMP3103:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3104:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4332:%.*]] = icmp eq i64 [[TMP3103]], [[TMP3104]]
// SIMD-ONLY0-NEXT:    [[CONV4333:%.*]] = zext i1 [[CMP4332]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4334:%.*]] = sext i32 [[CONV4333]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4334]], ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3105:%.*]] = load i64, ptr [[LR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4335:%.*]] = icmp ne i64 [[TMP3105]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4335]], label [[IF_THEN4336:%.*]], label [[IF_ELSE4337:%.*]]
// SIMD-ONLY0:       if.then4336:
// SIMD-ONLY0-NEXT:    [[TMP3106:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3106]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4338:%.*]]
// SIMD-ONLY0:       if.else4337:
// SIMD-ONLY0-NEXT:    [[TMP3107:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3107]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4338]]
// SIMD-ONLY0:       if.end4338:
// SIMD-ONLY0-NEXT:    [[TMP3108:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3108]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3109:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3110:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4339:%.*]] = icmp ugt i64 [[TMP3109]], [[TMP3110]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4339]], label [[IF_THEN4341:%.*]], label [[IF_END4342:%.*]]
// SIMD-ONLY0:       if.then4341:
// SIMD-ONLY0-NEXT:    [[TMP3111:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3111]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4342]]
// SIMD-ONLY0:       if.end4342:
// SIMD-ONLY0-NEXT:    [[TMP3112:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3112]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3113:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3114:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4343:%.*]] = icmp ugt i64 [[TMP3113]], [[TMP3114]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4343]], label [[IF_THEN4345:%.*]], label [[IF_END4346:%.*]]
// SIMD-ONLY0:       if.then4345:
// SIMD-ONLY0-NEXT:    [[TMP3115:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3115]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4346]]
// SIMD-ONLY0:       if.end4346:
// SIMD-ONLY0-NEXT:    [[TMP3116:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3116]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3117:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3118:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4347:%.*]] = icmp ult i64 [[TMP3117]], [[TMP3118]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4347]], label [[IF_THEN4349:%.*]], label [[IF_END4350:%.*]]
// SIMD-ONLY0:       if.then4349:
// SIMD-ONLY0-NEXT:    [[TMP3119:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3119]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4350]]
// SIMD-ONLY0:       if.end4350:
// SIMD-ONLY0-NEXT:    [[TMP3120:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3120]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3121:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3122:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4351:%.*]] = icmp ult i64 [[TMP3121]], [[TMP3122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4351]], label [[IF_THEN4353:%.*]], label [[IF_END4354:%.*]]
// SIMD-ONLY0:       if.then4353:
// SIMD-ONLY0-NEXT:    [[TMP3123:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3123]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4354]]
// SIMD-ONLY0:       if.end4354:
// SIMD-ONLY0-NEXT:    [[TMP3124:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3124]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3125:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3126:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4355:%.*]] = icmp eq i64 [[TMP3125]], [[TMP3126]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4355]], label [[IF_THEN4357:%.*]], label [[IF_END4358:%.*]]
// SIMD-ONLY0:       if.then4357:
// SIMD-ONLY0-NEXT:    [[TMP3127:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3127]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4358]]
// SIMD-ONLY0:       if.end4358:
// SIMD-ONLY0-NEXT:    [[TMP3128:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3128]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3129:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3130:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4359:%.*]] = icmp eq i64 [[TMP3129]], [[TMP3130]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4359]], label [[IF_THEN4361:%.*]], label [[IF_END4362:%.*]]
// SIMD-ONLY0:       if.then4361:
// SIMD-ONLY0-NEXT:    [[TMP3131:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3131]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4362]]
// SIMD-ONLY0:       if.end4362:
// SIMD-ONLY0-NEXT:    [[TMP3132:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3133:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4363:%.*]] = icmp ugt i64 [[TMP3132]], [[TMP3133]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4363]], label [[IF_THEN4365:%.*]], label [[IF_END4366:%.*]]
// SIMD-ONLY0:       if.then4365:
// SIMD-ONLY0-NEXT:    [[TMP3134:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3134]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4366]]
// SIMD-ONLY0:       if.end4366:
// SIMD-ONLY0-NEXT:    [[TMP3135:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3135]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3136:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3137:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4367:%.*]] = icmp ugt i64 [[TMP3136]], [[TMP3137]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4367]], label [[IF_THEN4369:%.*]], label [[IF_END4370:%.*]]
// SIMD-ONLY0:       if.then4369:
// SIMD-ONLY0-NEXT:    [[TMP3138:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3138]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4370]]
// SIMD-ONLY0:       if.end4370:
// SIMD-ONLY0-NEXT:    [[TMP3139:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3139]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3140:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3141:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4371:%.*]] = icmp ult i64 [[TMP3140]], [[TMP3141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4371]], label [[IF_THEN4373:%.*]], label [[IF_END4374:%.*]]
// SIMD-ONLY0:       if.then4373:
// SIMD-ONLY0-NEXT:    [[TMP3142:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3142]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4374]]
// SIMD-ONLY0:       if.end4374:
// SIMD-ONLY0-NEXT:    [[TMP3143:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3143]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3144:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3145:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4375:%.*]] = icmp ult i64 [[TMP3144]], [[TMP3145]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4375]], label [[IF_THEN4377:%.*]], label [[IF_END4378:%.*]]
// SIMD-ONLY0:       if.then4377:
// SIMD-ONLY0-NEXT:    [[TMP3146:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3146]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4378]]
// SIMD-ONLY0:       if.end4378:
// SIMD-ONLY0-NEXT:    [[TMP3147:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3147]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3148:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3149:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4379:%.*]] = icmp eq i64 [[TMP3148]], [[TMP3149]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4379]], label [[IF_THEN4381:%.*]], label [[IF_END4382:%.*]]
// SIMD-ONLY0:       if.then4381:
// SIMD-ONLY0-NEXT:    [[TMP3150:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3150]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4382]]
// SIMD-ONLY0:       if.end4382:
// SIMD-ONLY0-NEXT:    [[TMP3151:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3151]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3152:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3153:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4383:%.*]] = icmp eq i64 [[TMP3152]], [[TMP3153]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4383]], label [[IF_THEN4385:%.*]], label [[IF_END4386:%.*]]
// SIMD-ONLY0:       if.then4385:
// SIMD-ONLY0-NEXT:    [[TMP3154:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3154]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4386]]
// SIMD-ONLY0:       if.end4386:
// SIMD-ONLY0-NEXT:    [[TMP3155:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3155]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3156:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3157:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4387:%.*]] = icmp eq i64 [[TMP3156]], [[TMP3157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4387]], label [[IF_THEN4389:%.*]], label [[IF_ELSE4390:%.*]]
// SIMD-ONLY0:       if.then4389:
// SIMD-ONLY0-NEXT:    [[TMP3158:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3158]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4391:%.*]]
// SIMD-ONLY0:       if.else4390:
// SIMD-ONLY0-NEXT:    [[TMP3159:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3159]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4391]]
// SIMD-ONLY0:       if.end4391:
// SIMD-ONLY0-NEXT:    [[TMP3160:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3161:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4392:%.*]] = icmp eq i64 [[TMP3160]], [[TMP3161]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4392]], label [[IF_THEN4394:%.*]], label [[IF_ELSE4395:%.*]]
// SIMD-ONLY0:       if.then4394:
// SIMD-ONLY0-NEXT:    [[TMP3162:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3162]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4396:%.*]]
// SIMD-ONLY0:       if.else4395:
// SIMD-ONLY0-NEXT:    [[TMP3163:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3163]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4396]]
// SIMD-ONLY0:       if.end4396:
// SIMD-ONLY0-NEXT:    [[TMP3164:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3165:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4397:%.*]] = icmp eq i64 [[TMP3164]], [[TMP3165]]
// SIMD-ONLY0-NEXT:    [[CONV4398:%.*]] = zext i1 [[CMP4397]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4399:%.*]] = sext i32 [[CONV4398]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4399]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3166:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4400:%.*]] = icmp ne i64 [[TMP3166]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4400]], label [[IF_THEN4401:%.*]], label [[IF_END4402:%.*]]
// SIMD-ONLY0:       if.then4401:
// SIMD-ONLY0-NEXT:    [[TMP3167:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3167]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4402]]
// SIMD-ONLY0:       if.end4402:
// SIMD-ONLY0-NEXT:    [[TMP3168:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3169:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4403:%.*]] = icmp eq i64 [[TMP3168]], [[TMP3169]]
// SIMD-ONLY0-NEXT:    [[CONV4404:%.*]] = zext i1 [[CMP4403]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4405:%.*]] = sext i32 [[CONV4404]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4405]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3170:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4406:%.*]] = icmp ne i64 [[TMP3170]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4406]], label [[IF_THEN4407:%.*]], label [[IF_END4408:%.*]]
// SIMD-ONLY0:       if.then4407:
// SIMD-ONLY0-NEXT:    [[TMP3171:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3171]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4408]]
// SIMD-ONLY0:       if.end4408:
// SIMD-ONLY0-NEXT:    [[TMP3172:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3173:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4409:%.*]] = icmp eq i64 [[TMP3172]], [[TMP3173]]
// SIMD-ONLY0-NEXT:    [[CONV4410:%.*]] = zext i1 [[CMP4409]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4411:%.*]] = sext i32 [[CONV4410]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4411]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3174:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4412:%.*]] = icmp ne i64 [[TMP3174]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4412]], label [[IF_THEN4413:%.*]], label [[IF_ELSE4414:%.*]]
// SIMD-ONLY0:       if.then4413:
// SIMD-ONLY0-NEXT:    [[TMP3175:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3175]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4415:%.*]]
// SIMD-ONLY0:       if.else4414:
// SIMD-ONLY0-NEXT:    [[TMP3176:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3176]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4415]]
// SIMD-ONLY0:       if.end4415:
// SIMD-ONLY0-NEXT:    [[TMP3177:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3178:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4416:%.*]] = icmp eq i64 [[TMP3177]], [[TMP3178]]
// SIMD-ONLY0-NEXT:    [[CONV4417:%.*]] = zext i1 [[CMP4416]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4418:%.*]] = sext i32 [[CONV4417]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4418]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3179:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4419:%.*]] = icmp ne i64 [[TMP3179]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4419]], label [[IF_THEN4420:%.*]], label [[IF_ELSE4421:%.*]]
// SIMD-ONLY0:       if.then4420:
// SIMD-ONLY0-NEXT:    [[TMP3180:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3180]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4422:%.*]]
// SIMD-ONLY0:       if.else4421:
// SIMD-ONLY0-NEXT:    [[TMP3181:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3181]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4422]]
// SIMD-ONLY0:       if.end4422:
// SIMD-ONLY0-NEXT:    [[TMP3182:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3182]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3183:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3184:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4423:%.*]] = icmp ugt i64 [[TMP3183]], [[TMP3184]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4423]], label [[IF_THEN4425:%.*]], label [[IF_END4426:%.*]]
// SIMD-ONLY0:       if.then4425:
// SIMD-ONLY0-NEXT:    [[TMP3185:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3185]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4426]]
// SIMD-ONLY0:       if.end4426:
// SIMD-ONLY0-NEXT:    [[TMP3186:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3186]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3187:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3188:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4427:%.*]] = icmp ugt i64 [[TMP3187]], [[TMP3188]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4427]], label [[IF_THEN4429:%.*]], label [[IF_END4430:%.*]]
// SIMD-ONLY0:       if.then4429:
// SIMD-ONLY0-NEXT:    [[TMP3189:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3189]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4430]]
// SIMD-ONLY0:       if.end4430:
// SIMD-ONLY0-NEXT:    [[TMP3190:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3190]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3191:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3192:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4431:%.*]] = icmp ult i64 [[TMP3191]], [[TMP3192]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4431]], label [[IF_THEN4433:%.*]], label [[IF_END4434:%.*]]
// SIMD-ONLY0:       if.then4433:
// SIMD-ONLY0-NEXT:    [[TMP3193:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3193]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4434]]
// SIMD-ONLY0:       if.end4434:
// SIMD-ONLY0-NEXT:    [[TMP3194:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3194]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3195:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3196:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4435:%.*]] = icmp ult i64 [[TMP3195]], [[TMP3196]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4435]], label [[IF_THEN4437:%.*]], label [[IF_END4438:%.*]]
// SIMD-ONLY0:       if.then4437:
// SIMD-ONLY0-NEXT:    [[TMP3197:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3197]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4438]]
// SIMD-ONLY0:       if.end4438:
// SIMD-ONLY0-NEXT:    [[TMP3198:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3198]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3199:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3200:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4439:%.*]] = icmp eq i64 [[TMP3199]], [[TMP3200]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4439]], label [[IF_THEN4441:%.*]], label [[IF_END4442:%.*]]
// SIMD-ONLY0:       if.then4441:
// SIMD-ONLY0-NEXT:    [[TMP3201:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3201]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4442]]
// SIMD-ONLY0:       if.end4442:
// SIMD-ONLY0-NEXT:    [[TMP3202:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3202]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3203:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3204:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4443:%.*]] = icmp eq i64 [[TMP3203]], [[TMP3204]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4443]], label [[IF_THEN4445:%.*]], label [[IF_END4446:%.*]]
// SIMD-ONLY0:       if.then4445:
// SIMD-ONLY0-NEXT:    [[TMP3205:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3205]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4446]]
// SIMD-ONLY0:       if.end4446:
// SIMD-ONLY0-NEXT:    [[TMP3206:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3207:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4447:%.*]] = icmp ugt i64 [[TMP3206]], [[TMP3207]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4447]], label [[IF_THEN4449:%.*]], label [[IF_END4450:%.*]]
// SIMD-ONLY0:       if.then4449:
// SIMD-ONLY0-NEXT:    [[TMP3208:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3208]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4450]]
// SIMD-ONLY0:       if.end4450:
// SIMD-ONLY0-NEXT:    [[TMP3209:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3209]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3210:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3211:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4451:%.*]] = icmp ugt i64 [[TMP3210]], [[TMP3211]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4451]], label [[IF_THEN4453:%.*]], label [[IF_END4454:%.*]]
// SIMD-ONLY0:       if.then4453:
// SIMD-ONLY0-NEXT:    [[TMP3212:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3212]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4454]]
// SIMD-ONLY0:       if.end4454:
// SIMD-ONLY0-NEXT:    [[TMP3213:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3213]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3214:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3215:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4455:%.*]] = icmp ult i64 [[TMP3214]], [[TMP3215]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4455]], label [[IF_THEN4457:%.*]], label [[IF_END4458:%.*]]
// SIMD-ONLY0:       if.then4457:
// SIMD-ONLY0-NEXT:    [[TMP3216:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3216]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4458]]
// SIMD-ONLY0:       if.end4458:
// SIMD-ONLY0-NEXT:    [[TMP3217:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3217]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3218:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3219:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4459:%.*]] = icmp ult i64 [[TMP3218]], [[TMP3219]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4459]], label [[IF_THEN4461:%.*]], label [[IF_END4462:%.*]]
// SIMD-ONLY0:       if.then4461:
// SIMD-ONLY0-NEXT:    [[TMP3220:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3220]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4462]]
// SIMD-ONLY0:       if.end4462:
// SIMD-ONLY0-NEXT:    [[TMP3221:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3221]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3222:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3223:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4463:%.*]] = icmp eq i64 [[TMP3222]], [[TMP3223]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4463]], label [[IF_THEN4465:%.*]], label [[IF_END4466:%.*]]
// SIMD-ONLY0:       if.then4465:
// SIMD-ONLY0-NEXT:    [[TMP3224:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3224]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4466]]
// SIMD-ONLY0:       if.end4466:
// SIMD-ONLY0-NEXT:    [[TMP3225:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3225]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3226:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3227:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4467:%.*]] = icmp eq i64 [[TMP3226]], [[TMP3227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4467]], label [[IF_THEN4469:%.*]], label [[IF_END4470:%.*]]
// SIMD-ONLY0:       if.then4469:
// SIMD-ONLY0-NEXT:    [[TMP3228:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3228]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4470]]
// SIMD-ONLY0:       if.end4470:
// SIMD-ONLY0-NEXT:    [[TMP3229:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3229]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3230:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3231:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4471:%.*]] = icmp eq i64 [[TMP3230]], [[TMP3231]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4471]], label [[IF_THEN4473:%.*]], label [[IF_ELSE4474:%.*]]
// SIMD-ONLY0:       if.then4473:
// SIMD-ONLY0-NEXT:    [[TMP3232:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3232]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4475:%.*]]
// SIMD-ONLY0:       if.else4474:
// SIMD-ONLY0-NEXT:    [[TMP3233:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3233]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4475]]
// SIMD-ONLY0:       if.end4475:
// SIMD-ONLY0-NEXT:    [[TMP3234:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3235:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4476:%.*]] = icmp eq i64 [[TMP3234]], [[TMP3235]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4476]], label [[IF_THEN4478:%.*]], label [[IF_ELSE4479:%.*]]
// SIMD-ONLY0:       if.then4478:
// SIMD-ONLY0-NEXT:    [[TMP3236:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3236]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4480:%.*]]
// SIMD-ONLY0:       if.else4479:
// SIMD-ONLY0-NEXT:    [[TMP3237:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3237]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4480]]
// SIMD-ONLY0:       if.end4480:
// SIMD-ONLY0-NEXT:    [[TMP3238:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3239:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4481:%.*]] = icmp eq i64 [[TMP3238]], [[TMP3239]]
// SIMD-ONLY0-NEXT:    [[CONV4482:%.*]] = zext i1 [[CMP4481]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4483:%.*]] = sext i32 [[CONV4482]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4483]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3240:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4484:%.*]] = icmp ne i64 [[TMP3240]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4484]], label [[IF_THEN4485:%.*]], label [[IF_END4486:%.*]]
// SIMD-ONLY0:       if.then4485:
// SIMD-ONLY0-NEXT:    [[TMP3241:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3241]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4486]]
// SIMD-ONLY0:       if.end4486:
// SIMD-ONLY0-NEXT:    [[TMP3242:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3243:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4487:%.*]] = icmp eq i64 [[TMP3242]], [[TMP3243]]
// SIMD-ONLY0-NEXT:    [[CONV4488:%.*]] = zext i1 [[CMP4487]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4489:%.*]] = sext i32 [[CONV4488]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4489]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3244:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4490:%.*]] = icmp ne i64 [[TMP3244]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4490]], label [[IF_THEN4491:%.*]], label [[IF_END4492:%.*]]
// SIMD-ONLY0:       if.then4491:
// SIMD-ONLY0-NEXT:    [[TMP3245:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3245]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4492]]
// SIMD-ONLY0:       if.end4492:
// SIMD-ONLY0-NEXT:    [[TMP3246:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3247:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4493:%.*]] = icmp eq i64 [[TMP3246]], [[TMP3247]]
// SIMD-ONLY0-NEXT:    [[CONV4494:%.*]] = zext i1 [[CMP4493]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4495:%.*]] = sext i32 [[CONV4494]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4495]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3248:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4496:%.*]] = icmp ne i64 [[TMP3248]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4496]], label [[IF_THEN4497:%.*]], label [[IF_ELSE4498:%.*]]
// SIMD-ONLY0:       if.then4497:
// SIMD-ONLY0-NEXT:    [[TMP3249:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3249]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4499:%.*]]
// SIMD-ONLY0:       if.else4498:
// SIMD-ONLY0-NEXT:    [[TMP3250:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3250]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4499]]
// SIMD-ONLY0:       if.end4499:
// SIMD-ONLY0-NEXT:    [[TMP3251:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3252:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4500:%.*]] = icmp eq i64 [[TMP3251]], [[TMP3252]]
// SIMD-ONLY0-NEXT:    [[CONV4501:%.*]] = zext i1 [[CMP4500]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4502:%.*]] = sext i32 [[CONV4501]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4502]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3253:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4503:%.*]] = icmp ne i64 [[TMP3253]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4503]], label [[IF_THEN4504:%.*]], label [[IF_ELSE4505:%.*]]
// SIMD-ONLY0:       if.then4504:
// SIMD-ONLY0-NEXT:    [[TMP3254:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3254]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4506:%.*]]
// SIMD-ONLY0:       if.else4505:
// SIMD-ONLY0-NEXT:    [[TMP3255:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3255]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4506]]
// SIMD-ONLY0:       if.end4506:
// SIMD-ONLY0-NEXT:    [[TMP3256:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3256]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3257:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3258:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4507:%.*]] = icmp ugt i64 [[TMP3257]], [[TMP3258]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4507]], label [[IF_THEN4509:%.*]], label [[IF_END4510:%.*]]
// SIMD-ONLY0:       if.then4509:
// SIMD-ONLY0-NEXT:    [[TMP3259:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3259]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4510]]
// SIMD-ONLY0:       if.end4510:
// SIMD-ONLY0-NEXT:    [[TMP3260:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3260]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3261:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3262:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4511:%.*]] = icmp ugt i64 [[TMP3261]], [[TMP3262]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4511]], label [[IF_THEN4513:%.*]], label [[IF_END4514:%.*]]
// SIMD-ONLY0:       if.then4513:
// SIMD-ONLY0-NEXT:    [[TMP3263:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3263]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4514]]
// SIMD-ONLY0:       if.end4514:
// SIMD-ONLY0-NEXT:    [[TMP3264:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3264]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3265:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3266:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4515:%.*]] = icmp ult i64 [[TMP3265]], [[TMP3266]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4515]], label [[IF_THEN4517:%.*]], label [[IF_END4518:%.*]]
// SIMD-ONLY0:       if.then4517:
// SIMD-ONLY0-NEXT:    [[TMP3267:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3267]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4518]]
// SIMD-ONLY0:       if.end4518:
// SIMD-ONLY0-NEXT:    [[TMP3268:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3268]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3269:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3270:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4519:%.*]] = icmp ult i64 [[TMP3269]], [[TMP3270]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4519]], label [[IF_THEN4521:%.*]], label [[IF_END4522:%.*]]
// SIMD-ONLY0:       if.then4521:
// SIMD-ONLY0-NEXT:    [[TMP3271:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3271]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4522]]
// SIMD-ONLY0:       if.end4522:
// SIMD-ONLY0-NEXT:    [[TMP3272:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3272]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3273:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3274:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4523:%.*]] = icmp eq i64 [[TMP3273]], [[TMP3274]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4523]], label [[IF_THEN4525:%.*]], label [[IF_END4526:%.*]]
// SIMD-ONLY0:       if.then4525:
// SIMD-ONLY0-NEXT:    [[TMP3275:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3275]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4526]]
// SIMD-ONLY0:       if.end4526:
// SIMD-ONLY0-NEXT:    [[TMP3276:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3276]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3277:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3278:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4527:%.*]] = icmp eq i64 [[TMP3277]], [[TMP3278]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4527]], label [[IF_THEN4529:%.*]], label [[IF_END4530:%.*]]
// SIMD-ONLY0:       if.then4529:
// SIMD-ONLY0-NEXT:    [[TMP3279:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3279]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4530]]
// SIMD-ONLY0:       if.end4530:
// SIMD-ONLY0-NEXT:    [[TMP3280:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3281:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4531:%.*]] = icmp ugt i64 [[TMP3280]], [[TMP3281]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4531]], label [[IF_THEN4533:%.*]], label [[IF_END4534:%.*]]
// SIMD-ONLY0:       if.then4533:
// SIMD-ONLY0-NEXT:    [[TMP3282:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3282]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4534]]
// SIMD-ONLY0:       if.end4534:
// SIMD-ONLY0-NEXT:    [[TMP3283:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3283]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3284:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3285:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4535:%.*]] = icmp ugt i64 [[TMP3284]], [[TMP3285]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4535]], label [[IF_THEN4537:%.*]], label [[IF_END4538:%.*]]
// SIMD-ONLY0:       if.then4537:
// SIMD-ONLY0-NEXT:    [[TMP3286:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3286]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4538]]
// SIMD-ONLY0:       if.end4538:
// SIMD-ONLY0-NEXT:    [[TMP3287:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3287]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3288:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3289:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4539:%.*]] = icmp ult i64 [[TMP3288]], [[TMP3289]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4539]], label [[IF_THEN4541:%.*]], label [[IF_END4542:%.*]]
// SIMD-ONLY0:       if.then4541:
// SIMD-ONLY0-NEXT:    [[TMP3290:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3290]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4542]]
// SIMD-ONLY0:       if.end4542:
// SIMD-ONLY0-NEXT:    [[TMP3291:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3291]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3292:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3293:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4543:%.*]] = icmp ult i64 [[TMP3292]], [[TMP3293]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4543]], label [[IF_THEN4545:%.*]], label [[IF_END4546:%.*]]
// SIMD-ONLY0:       if.then4545:
// SIMD-ONLY0-NEXT:    [[TMP3294:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3294]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4546]]
// SIMD-ONLY0:       if.end4546:
// SIMD-ONLY0-NEXT:    [[TMP3295:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3295]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3296:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3297:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4547:%.*]] = icmp eq i64 [[TMP3296]], [[TMP3297]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4547]], label [[IF_THEN4549:%.*]], label [[IF_END4550:%.*]]
// SIMD-ONLY0:       if.then4549:
// SIMD-ONLY0-NEXT:    [[TMP3298:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3298]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4550]]
// SIMD-ONLY0:       if.end4550:
// SIMD-ONLY0-NEXT:    [[TMP3299:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3299]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3300:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3301:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4551:%.*]] = icmp eq i64 [[TMP3300]], [[TMP3301]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4551]], label [[IF_THEN4553:%.*]], label [[IF_END4554:%.*]]
// SIMD-ONLY0:       if.then4553:
// SIMD-ONLY0-NEXT:    [[TMP3302:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3302]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4554]]
// SIMD-ONLY0:       if.end4554:
// SIMD-ONLY0-NEXT:    [[TMP3303:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3303]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3304:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3305:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4555:%.*]] = icmp eq i64 [[TMP3304]], [[TMP3305]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4555]], label [[IF_THEN4557:%.*]], label [[IF_ELSE4558:%.*]]
// SIMD-ONLY0:       if.then4557:
// SIMD-ONLY0-NEXT:    [[TMP3306:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3306]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4559:%.*]]
// SIMD-ONLY0:       if.else4558:
// SIMD-ONLY0-NEXT:    [[TMP3307:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3307]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4559]]
// SIMD-ONLY0:       if.end4559:
// SIMD-ONLY0-NEXT:    [[TMP3308:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3309:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4560:%.*]] = icmp eq i64 [[TMP3308]], [[TMP3309]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4560]], label [[IF_THEN4562:%.*]], label [[IF_ELSE4563:%.*]]
// SIMD-ONLY0:       if.then4562:
// SIMD-ONLY0-NEXT:    [[TMP3310:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3310]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4564:%.*]]
// SIMD-ONLY0:       if.else4563:
// SIMD-ONLY0-NEXT:    [[TMP3311:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3311]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4564]]
// SIMD-ONLY0:       if.end4564:
// SIMD-ONLY0-NEXT:    [[TMP3312:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3313:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4565:%.*]] = icmp eq i64 [[TMP3312]], [[TMP3313]]
// SIMD-ONLY0-NEXT:    [[CONV4566:%.*]] = zext i1 [[CMP4565]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4567:%.*]] = sext i32 [[CONV4566]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4567]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3314:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4568:%.*]] = icmp ne i64 [[TMP3314]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4568]], label [[IF_THEN4569:%.*]], label [[IF_END4570:%.*]]
// SIMD-ONLY0:       if.then4569:
// SIMD-ONLY0-NEXT:    [[TMP3315:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3315]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4570]]
// SIMD-ONLY0:       if.end4570:
// SIMD-ONLY0-NEXT:    [[TMP3316:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3317:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4571:%.*]] = icmp eq i64 [[TMP3316]], [[TMP3317]]
// SIMD-ONLY0-NEXT:    [[CONV4572:%.*]] = zext i1 [[CMP4571]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4573:%.*]] = sext i32 [[CONV4572]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4573]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3318:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4574:%.*]] = icmp ne i64 [[TMP3318]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4574]], label [[IF_THEN4575:%.*]], label [[IF_END4576:%.*]]
// SIMD-ONLY0:       if.then4575:
// SIMD-ONLY0-NEXT:    [[TMP3319:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3319]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4576]]
// SIMD-ONLY0:       if.end4576:
// SIMD-ONLY0-NEXT:    [[TMP3320:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3321:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4577:%.*]] = icmp eq i64 [[TMP3320]], [[TMP3321]]
// SIMD-ONLY0-NEXT:    [[CONV4578:%.*]] = zext i1 [[CMP4577]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4579:%.*]] = sext i32 [[CONV4578]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4579]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3322:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4580:%.*]] = icmp ne i64 [[TMP3322]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4580]], label [[IF_THEN4581:%.*]], label [[IF_ELSE4582:%.*]]
// SIMD-ONLY0:       if.then4581:
// SIMD-ONLY0-NEXT:    [[TMP3323:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3323]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4583:%.*]]
// SIMD-ONLY0:       if.else4582:
// SIMD-ONLY0-NEXT:    [[TMP3324:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3324]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4583]]
// SIMD-ONLY0:       if.end4583:
// SIMD-ONLY0-NEXT:    [[TMP3325:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3326:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4584:%.*]] = icmp eq i64 [[TMP3325]], [[TMP3326]]
// SIMD-ONLY0-NEXT:    [[CONV4585:%.*]] = zext i1 [[CMP4584]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4586:%.*]] = sext i32 [[CONV4585]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4586]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3327:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4587:%.*]] = icmp ne i64 [[TMP3327]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4587]], label [[IF_THEN4588:%.*]], label [[IF_ELSE4589:%.*]]
// SIMD-ONLY0:       if.then4588:
// SIMD-ONLY0-NEXT:    [[TMP3328:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3328]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4590:%.*]]
// SIMD-ONLY0:       if.else4589:
// SIMD-ONLY0-NEXT:    [[TMP3329:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3329]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4590]]
// SIMD-ONLY0:       if.end4590:
// SIMD-ONLY0-NEXT:    [[TMP3330:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3330]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3331:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3332:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4591:%.*]] = icmp ugt i64 [[TMP3331]], [[TMP3332]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4591]], label [[IF_THEN4593:%.*]], label [[IF_END4594:%.*]]
// SIMD-ONLY0:       if.then4593:
// SIMD-ONLY0-NEXT:    [[TMP3333:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3333]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4594]]
// SIMD-ONLY0:       if.end4594:
// SIMD-ONLY0-NEXT:    [[TMP3334:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3334]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3335:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3336:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4595:%.*]] = icmp ugt i64 [[TMP3335]], [[TMP3336]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4595]], label [[IF_THEN4597:%.*]], label [[IF_END4598:%.*]]
// SIMD-ONLY0:       if.then4597:
// SIMD-ONLY0-NEXT:    [[TMP3337:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3337]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4598]]
// SIMD-ONLY0:       if.end4598:
// SIMD-ONLY0-NEXT:    [[TMP3338:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3338]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3339:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3340:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4599:%.*]] = icmp ult i64 [[TMP3339]], [[TMP3340]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4599]], label [[IF_THEN4601:%.*]], label [[IF_END4602:%.*]]
// SIMD-ONLY0:       if.then4601:
// SIMD-ONLY0-NEXT:    [[TMP3341:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3341]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4602]]
// SIMD-ONLY0:       if.end4602:
// SIMD-ONLY0-NEXT:    [[TMP3342:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3342]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3343:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3344:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4603:%.*]] = icmp ult i64 [[TMP3343]], [[TMP3344]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4603]], label [[IF_THEN4605:%.*]], label [[IF_END4606:%.*]]
// SIMD-ONLY0:       if.then4605:
// SIMD-ONLY0-NEXT:    [[TMP3345:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3345]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4606]]
// SIMD-ONLY0:       if.end4606:
// SIMD-ONLY0-NEXT:    [[TMP3346:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3346]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3347:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3348:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4607:%.*]] = icmp eq i64 [[TMP3347]], [[TMP3348]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4607]], label [[IF_THEN4609:%.*]], label [[IF_END4610:%.*]]
// SIMD-ONLY0:       if.then4609:
// SIMD-ONLY0-NEXT:    [[TMP3349:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3349]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4610]]
// SIMD-ONLY0:       if.end4610:
// SIMD-ONLY0-NEXT:    [[TMP3350:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3350]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3351:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3352:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4611:%.*]] = icmp eq i64 [[TMP3351]], [[TMP3352]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4611]], label [[IF_THEN4613:%.*]], label [[IF_END4614:%.*]]
// SIMD-ONLY0:       if.then4613:
// SIMD-ONLY0-NEXT:    [[TMP3353:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3353]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4614]]
// SIMD-ONLY0:       if.end4614:
// SIMD-ONLY0-NEXT:    [[TMP3354:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3355:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4615:%.*]] = icmp ugt i64 [[TMP3354]], [[TMP3355]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4615]], label [[IF_THEN4617:%.*]], label [[IF_END4618:%.*]]
// SIMD-ONLY0:       if.then4617:
// SIMD-ONLY0-NEXT:    [[TMP3356:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3356]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4618]]
// SIMD-ONLY0:       if.end4618:
// SIMD-ONLY0-NEXT:    [[TMP3357:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3357]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3358:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3359:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4619:%.*]] = icmp ugt i64 [[TMP3358]], [[TMP3359]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4619]], label [[IF_THEN4621:%.*]], label [[IF_END4622:%.*]]
// SIMD-ONLY0:       if.then4621:
// SIMD-ONLY0-NEXT:    [[TMP3360:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3360]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4622]]
// SIMD-ONLY0:       if.end4622:
// SIMD-ONLY0-NEXT:    [[TMP3361:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3361]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3362:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3363:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4623:%.*]] = icmp ult i64 [[TMP3362]], [[TMP3363]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4623]], label [[IF_THEN4625:%.*]], label [[IF_END4626:%.*]]
// SIMD-ONLY0:       if.then4625:
// SIMD-ONLY0-NEXT:    [[TMP3364:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3364]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4626]]
// SIMD-ONLY0:       if.end4626:
// SIMD-ONLY0-NEXT:    [[TMP3365:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3365]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3366:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3367:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4627:%.*]] = icmp ult i64 [[TMP3366]], [[TMP3367]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4627]], label [[IF_THEN4629:%.*]], label [[IF_END4630:%.*]]
// SIMD-ONLY0:       if.then4629:
// SIMD-ONLY0-NEXT:    [[TMP3368:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3368]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4630]]
// SIMD-ONLY0:       if.end4630:
// SIMD-ONLY0-NEXT:    [[TMP3369:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3369]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3370:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3371:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4631:%.*]] = icmp eq i64 [[TMP3370]], [[TMP3371]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4631]], label [[IF_THEN4633:%.*]], label [[IF_END4634:%.*]]
// SIMD-ONLY0:       if.then4633:
// SIMD-ONLY0-NEXT:    [[TMP3372:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3372]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4634]]
// SIMD-ONLY0:       if.end4634:
// SIMD-ONLY0-NEXT:    [[TMP3373:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3373]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3374:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3375:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4635:%.*]] = icmp eq i64 [[TMP3374]], [[TMP3375]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4635]], label [[IF_THEN4637:%.*]], label [[IF_END4638:%.*]]
// SIMD-ONLY0:       if.then4637:
// SIMD-ONLY0-NEXT:    [[TMP3376:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3376]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4638]]
// SIMD-ONLY0:       if.end4638:
// SIMD-ONLY0-NEXT:    [[TMP3377:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3377]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3378:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3379:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4639:%.*]] = icmp eq i64 [[TMP3378]], [[TMP3379]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4639]], label [[IF_THEN4641:%.*]], label [[IF_ELSE4642:%.*]]
// SIMD-ONLY0:       if.then4641:
// SIMD-ONLY0-NEXT:    [[TMP3380:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3380]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4643:%.*]]
// SIMD-ONLY0:       if.else4642:
// SIMD-ONLY0-NEXT:    [[TMP3381:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3381]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4643]]
// SIMD-ONLY0:       if.end4643:
// SIMD-ONLY0-NEXT:    [[TMP3382:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3383:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4644:%.*]] = icmp eq i64 [[TMP3382]], [[TMP3383]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4644]], label [[IF_THEN4646:%.*]], label [[IF_ELSE4647:%.*]]
// SIMD-ONLY0:       if.then4646:
// SIMD-ONLY0-NEXT:    [[TMP3384:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3384]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4648:%.*]]
// SIMD-ONLY0:       if.else4647:
// SIMD-ONLY0-NEXT:    [[TMP3385:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3385]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4648]]
// SIMD-ONLY0:       if.end4648:
// SIMD-ONLY0-NEXT:    [[TMP3386:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3387:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4649:%.*]] = icmp eq i64 [[TMP3386]], [[TMP3387]]
// SIMD-ONLY0-NEXT:    [[CONV4650:%.*]] = zext i1 [[CMP4649]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4651:%.*]] = sext i32 [[CONV4650]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4651]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3388:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4652:%.*]] = icmp ne i64 [[TMP3388]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4652]], label [[IF_THEN4653:%.*]], label [[IF_END4654:%.*]]
// SIMD-ONLY0:       if.then4653:
// SIMD-ONLY0-NEXT:    [[TMP3389:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3389]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4654]]
// SIMD-ONLY0:       if.end4654:
// SIMD-ONLY0-NEXT:    [[TMP3390:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3391:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4655:%.*]] = icmp eq i64 [[TMP3390]], [[TMP3391]]
// SIMD-ONLY0-NEXT:    [[CONV4656:%.*]] = zext i1 [[CMP4655]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4657:%.*]] = sext i32 [[CONV4656]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4657]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3392:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4658:%.*]] = icmp ne i64 [[TMP3392]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4658]], label [[IF_THEN4659:%.*]], label [[IF_END4660:%.*]]
// SIMD-ONLY0:       if.then4659:
// SIMD-ONLY0-NEXT:    [[TMP3393:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3393]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4660]]
// SIMD-ONLY0:       if.end4660:
// SIMD-ONLY0-NEXT:    [[TMP3394:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3395:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4661:%.*]] = icmp eq i64 [[TMP3394]], [[TMP3395]]
// SIMD-ONLY0-NEXT:    [[CONV4662:%.*]] = zext i1 [[CMP4661]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4663:%.*]] = sext i32 [[CONV4662]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4663]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3396:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4664:%.*]] = icmp ne i64 [[TMP3396]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4664]], label [[IF_THEN4665:%.*]], label [[IF_ELSE4666:%.*]]
// SIMD-ONLY0:       if.then4665:
// SIMD-ONLY0-NEXT:    [[TMP3397:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3397]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4667:%.*]]
// SIMD-ONLY0:       if.else4666:
// SIMD-ONLY0-NEXT:    [[TMP3398:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3398]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4667]]
// SIMD-ONLY0:       if.end4667:
// SIMD-ONLY0-NEXT:    [[TMP3399:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3400:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4668:%.*]] = icmp eq i64 [[TMP3399]], [[TMP3400]]
// SIMD-ONLY0-NEXT:    [[CONV4669:%.*]] = zext i1 [[CMP4668]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4670:%.*]] = sext i32 [[CONV4669]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4670]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3401:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4671:%.*]] = icmp ne i64 [[TMP3401]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4671]], label [[IF_THEN4672:%.*]], label [[IF_ELSE4673:%.*]]
// SIMD-ONLY0:       if.then4672:
// SIMD-ONLY0-NEXT:    [[TMP3402:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3402]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4674:%.*]]
// SIMD-ONLY0:       if.else4673:
// SIMD-ONLY0-NEXT:    [[TMP3403:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3403]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4674]]
// SIMD-ONLY0:       if.end4674:
// SIMD-ONLY0-NEXT:    [[TMP3404:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3404]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3405:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3406:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4675:%.*]] = icmp ugt i64 [[TMP3405]], [[TMP3406]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4675]], label [[IF_THEN4677:%.*]], label [[IF_END4678:%.*]]
// SIMD-ONLY0:       if.then4677:
// SIMD-ONLY0-NEXT:    [[TMP3407:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3407]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4678]]
// SIMD-ONLY0:       if.end4678:
// SIMD-ONLY0-NEXT:    [[TMP3408:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3408]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3409:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3410:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4679:%.*]] = icmp ugt i64 [[TMP3409]], [[TMP3410]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4679]], label [[IF_THEN4681:%.*]], label [[IF_END4682:%.*]]
// SIMD-ONLY0:       if.then4681:
// SIMD-ONLY0-NEXT:    [[TMP3411:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3411]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4682]]
// SIMD-ONLY0:       if.end4682:
// SIMD-ONLY0-NEXT:    [[TMP3412:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3412]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3413:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3414:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4683:%.*]] = icmp ult i64 [[TMP3413]], [[TMP3414]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4683]], label [[IF_THEN4685:%.*]], label [[IF_END4686:%.*]]
// SIMD-ONLY0:       if.then4685:
// SIMD-ONLY0-NEXT:    [[TMP3415:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3415]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4686]]
// SIMD-ONLY0:       if.end4686:
// SIMD-ONLY0-NEXT:    [[TMP3416:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3416]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3417:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3418:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4687:%.*]] = icmp ult i64 [[TMP3417]], [[TMP3418]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4687]], label [[IF_THEN4689:%.*]], label [[IF_END4690:%.*]]
// SIMD-ONLY0:       if.then4689:
// SIMD-ONLY0-NEXT:    [[TMP3419:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3419]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4690]]
// SIMD-ONLY0:       if.end4690:
// SIMD-ONLY0-NEXT:    [[TMP3420:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3420]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3421:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3422:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4691:%.*]] = icmp eq i64 [[TMP3421]], [[TMP3422]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4691]], label [[IF_THEN4693:%.*]], label [[IF_END4694:%.*]]
// SIMD-ONLY0:       if.then4693:
// SIMD-ONLY0-NEXT:    [[TMP3423:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3423]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4694]]
// SIMD-ONLY0:       if.end4694:
// SIMD-ONLY0-NEXT:    [[TMP3424:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3424]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3425:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3426:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4695:%.*]] = icmp eq i64 [[TMP3425]], [[TMP3426]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4695]], label [[IF_THEN4697:%.*]], label [[IF_END4698:%.*]]
// SIMD-ONLY0:       if.then4697:
// SIMD-ONLY0-NEXT:    [[TMP3427:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3427]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4698]]
// SIMD-ONLY0:       if.end4698:
// SIMD-ONLY0-NEXT:    [[TMP3428:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3429:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4699:%.*]] = icmp ugt i64 [[TMP3428]], [[TMP3429]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4699]], label [[IF_THEN4701:%.*]], label [[IF_END4702:%.*]]
// SIMD-ONLY0:       if.then4701:
// SIMD-ONLY0-NEXT:    [[TMP3430:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3430]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4702]]
// SIMD-ONLY0:       if.end4702:
// SIMD-ONLY0-NEXT:    [[TMP3431:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3431]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3432:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3433:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4703:%.*]] = icmp ugt i64 [[TMP3432]], [[TMP3433]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4703]], label [[IF_THEN4705:%.*]], label [[IF_END4706:%.*]]
// SIMD-ONLY0:       if.then4705:
// SIMD-ONLY0-NEXT:    [[TMP3434:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3434]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4706]]
// SIMD-ONLY0:       if.end4706:
// SIMD-ONLY0-NEXT:    [[TMP3435:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3435]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3436:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3437:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4707:%.*]] = icmp ult i64 [[TMP3436]], [[TMP3437]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4707]], label [[IF_THEN4709:%.*]], label [[IF_END4710:%.*]]
// SIMD-ONLY0:       if.then4709:
// SIMD-ONLY0-NEXT:    [[TMP3438:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3438]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4710]]
// SIMD-ONLY0:       if.end4710:
// SIMD-ONLY0-NEXT:    [[TMP3439:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3439]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3440:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3441:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4711:%.*]] = icmp ult i64 [[TMP3440]], [[TMP3441]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4711]], label [[IF_THEN4713:%.*]], label [[IF_END4714:%.*]]
// SIMD-ONLY0:       if.then4713:
// SIMD-ONLY0-NEXT:    [[TMP3442:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3442]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4714]]
// SIMD-ONLY0:       if.end4714:
// SIMD-ONLY0-NEXT:    [[TMP3443:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3443]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3444:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3445:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4715:%.*]] = icmp eq i64 [[TMP3444]], [[TMP3445]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4715]], label [[IF_THEN4717:%.*]], label [[IF_END4718:%.*]]
// SIMD-ONLY0:       if.then4717:
// SIMD-ONLY0-NEXT:    [[TMP3446:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3446]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4718]]
// SIMD-ONLY0:       if.end4718:
// SIMD-ONLY0-NEXT:    [[TMP3447:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3447]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3448:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3449:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4719:%.*]] = icmp eq i64 [[TMP3448]], [[TMP3449]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4719]], label [[IF_THEN4721:%.*]], label [[IF_END4722:%.*]]
// SIMD-ONLY0:       if.then4721:
// SIMD-ONLY0-NEXT:    [[TMP3450:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3450]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4722]]
// SIMD-ONLY0:       if.end4722:
// SIMD-ONLY0-NEXT:    [[TMP3451:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3451]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3452:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3453:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4723:%.*]] = icmp eq i64 [[TMP3452]], [[TMP3453]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4723]], label [[IF_THEN4725:%.*]], label [[IF_ELSE4726:%.*]]
// SIMD-ONLY0:       if.then4725:
// SIMD-ONLY0-NEXT:    [[TMP3454:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3454]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4727:%.*]]
// SIMD-ONLY0:       if.else4726:
// SIMD-ONLY0-NEXT:    [[TMP3455:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3455]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4727]]
// SIMD-ONLY0:       if.end4727:
// SIMD-ONLY0-NEXT:    [[TMP3456:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3457:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4728:%.*]] = icmp eq i64 [[TMP3456]], [[TMP3457]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4728]], label [[IF_THEN4730:%.*]], label [[IF_ELSE4731:%.*]]
// SIMD-ONLY0:       if.then4730:
// SIMD-ONLY0-NEXT:    [[TMP3458:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3458]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4732:%.*]]
// SIMD-ONLY0:       if.else4731:
// SIMD-ONLY0-NEXT:    [[TMP3459:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3459]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4732]]
// SIMD-ONLY0:       if.end4732:
// SIMD-ONLY0-NEXT:    [[TMP3460:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3461:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4733:%.*]] = icmp eq i64 [[TMP3460]], [[TMP3461]]
// SIMD-ONLY0-NEXT:    [[CONV4734:%.*]] = zext i1 [[CMP4733]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4735:%.*]] = sext i32 [[CONV4734]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4735]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3462:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4736:%.*]] = icmp ne i64 [[TMP3462]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4736]], label [[IF_THEN4737:%.*]], label [[IF_END4738:%.*]]
// SIMD-ONLY0:       if.then4737:
// SIMD-ONLY0-NEXT:    [[TMP3463:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3463]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4738]]
// SIMD-ONLY0:       if.end4738:
// SIMD-ONLY0-NEXT:    [[TMP3464:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3465:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4739:%.*]] = icmp eq i64 [[TMP3464]], [[TMP3465]]
// SIMD-ONLY0-NEXT:    [[CONV4740:%.*]] = zext i1 [[CMP4739]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4741:%.*]] = sext i32 [[CONV4740]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4741]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3466:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4742:%.*]] = icmp ne i64 [[TMP3466]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4742]], label [[IF_THEN4743:%.*]], label [[IF_END4744:%.*]]
// SIMD-ONLY0:       if.then4743:
// SIMD-ONLY0-NEXT:    [[TMP3467:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3467]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4744]]
// SIMD-ONLY0:       if.end4744:
// SIMD-ONLY0-NEXT:    [[TMP3468:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3469:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4745:%.*]] = icmp eq i64 [[TMP3468]], [[TMP3469]]
// SIMD-ONLY0-NEXT:    [[CONV4746:%.*]] = zext i1 [[CMP4745]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4747:%.*]] = sext i32 [[CONV4746]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4747]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3470:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4748:%.*]] = icmp ne i64 [[TMP3470]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4748]], label [[IF_THEN4749:%.*]], label [[IF_ELSE4750:%.*]]
// SIMD-ONLY0:       if.then4749:
// SIMD-ONLY0-NEXT:    [[TMP3471:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3471]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4751:%.*]]
// SIMD-ONLY0:       if.else4750:
// SIMD-ONLY0-NEXT:    [[TMP3472:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3472]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4751]]
// SIMD-ONLY0:       if.end4751:
// SIMD-ONLY0-NEXT:    [[TMP3473:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3474:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4752:%.*]] = icmp eq i64 [[TMP3473]], [[TMP3474]]
// SIMD-ONLY0-NEXT:    [[CONV4753:%.*]] = zext i1 [[CMP4752]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4754:%.*]] = sext i32 [[CONV4753]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4754]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3475:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4755:%.*]] = icmp ne i64 [[TMP3475]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4755]], label [[IF_THEN4756:%.*]], label [[IF_ELSE4757:%.*]]
// SIMD-ONLY0:       if.then4756:
// SIMD-ONLY0-NEXT:    [[TMP3476:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3476]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4758:%.*]]
// SIMD-ONLY0:       if.else4757:
// SIMD-ONLY0-NEXT:    [[TMP3477:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3477]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4758]]
// SIMD-ONLY0:       if.end4758:
// SIMD-ONLY0-NEXT:    [[TMP3478:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3478]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3479:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3480:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4759:%.*]] = icmp ugt i64 [[TMP3479]], [[TMP3480]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4759]], label [[IF_THEN4761:%.*]], label [[IF_END4762:%.*]]
// SIMD-ONLY0:       if.then4761:
// SIMD-ONLY0-NEXT:    [[TMP3481:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3481]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4762]]
// SIMD-ONLY0:       if.end4762:
// SIMD-ONLY0-NEXT:    [[TMP3482:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3482]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3483:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3484:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4763:%.*]] = icmp ugt i64 [[TMP3483]], [[TMP3484]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4763]], label [[IF_THEN4765:%.*]], label [[IF_END4766:%.*]]
// SIMD-ONLY0:       if.then4765:
// SIMD-ONLY0-NEXT:    [[TMP3485:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3485]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4766]]
// SIMD-ONLY0:       if.end4766:
// SIMD-ONLY0-NEXT:    [[TMP3486:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3486]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3487:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3488:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4767:%.*]] = icmp ult i64 [[TMP3487]], [[TMP3488]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4767]], label [[IF_THEN4769:%.*]], label [[IF_END4770:%.*]]
// SIMD-ONLY0:       if.then4769:
// SIMD-ONLY0-NEXT:    [[TMP3489:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3489]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4770]]
// SIMD-ONLY0:       if.end4770:
// SIMD-ONLY0-NEXT:    [[TMP3490:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3490]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3491:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3492:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4771:%.*]] = icmp ult i64 [[TMP3491]], [[TMP3492]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4771]], label [[IF_THEN4773:%.*]], label [[IF_END4774:%.*]]
// SIMD-ONLY0:       if.then4773:
// SIMD-ONLY0-NEXT:    [[TMP3493:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3493]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4774]]
// SIMD-ONLY0:       if.end4774:
// SIMD-ONLY0-NEXT:    [[TMP3494:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3494]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3495:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3496:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4775:%.*]] = icmp eq i64 [[TMP3495]], [[TMP3496]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4775]], label [[IF_THEN4777:%.*]], label [[IF_END4778:%.*]]
// SIMD-ONLY0:       if.then4777:
// SIMD-ONLY0-NEXT:    [[TMP3497:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3497]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4778]]
// SIMD-ONLY0:       if.end4778:
// SIMD-ONLY0-NEXT:    [[TMP3498:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3498]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3499:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3500:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4779:%.*]] = icmp eq i64 [[TMP3499]], [[TMP3500]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4779]], label [[IF_THEN4781:%.*]], label [[IF_END4782:%.*]]
// SIMD-ONLY0:       if.then4781:
// SIMD-ONLY0-NEXT:    [[TMP3501:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3501]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4782]]
// SIMD-ONLY0:       if.end4782:
// SIMD-ONLY0-NEXT:    [[TMP3502:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3503:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4783:%.*]] = icmp ugt i64 [[TMP3502]], [[TMP3503]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4783]], label [[IF_THEN4785:%.*]], label [[IF_END4786:%.*]]
// SIMD-ONLY0:       if.then4785:
// SIMD-ONLY0-NEXT:    [[TMP3504:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3504]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4786]]
// SIMD-ONLY0:       if.end4786:
// SIMD-ONLY0-NEXT:    [[TMP3505:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3505]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3506:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3507:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4787:%.*]] = icmp ugt i64 [[TMP3506]], [[TMP3507]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4787]], label [[IF_THEN4789:%.*]], label [[IF_END4790:%.*]]
// SIMD-ONLY0:       if.then4789:
// SIMD-ONLY0-NEXT:    [[TMP3508:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3508]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4790]]
// SIMD-ONLY0:       if.end4790:
// SIMD-ONLY0-NEXT:    [[TMP3509:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3509]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3510:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3511:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4791:%.*]] = icmp ult i64 [[TMP3510]], [[TMP3511]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4791]], label [[IF_THEN4793:%.*]], label [[IF_END4794:%.*]]
// SIMD-ONLY0:       if.then4793:
// SIMD-ONLY0-NEXT:    [[TMP3512:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3512]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4794]]
// SIMD-ONLY0:       if.end4794:
// SIMD-ONLY0-NEXT:    [[TMP3513:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3513]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3514:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3515:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4795:%.*]] = icmp ult i64 [[TMP3514]], [[TMP3515]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4795]], label [[IF_THEN4797:%.*]], label [[IF_END4798:%.*]]
// SIMD-ONLY0:       if.then4797:
// SIMD-ONLY0-NEXT:    [[TMP3516:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3516]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4798]]
// SIMD-ONLY0:       if.end4798:
// SIMD-ONLY0-NEXT:    [[TMP3517:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3517]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3518:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3519:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4799:%.*]] = icmp eq i64 [[TMP3518]], [[TMP3519]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4799]], label [[IF_THEN4801:%.*]], label [[IF_END4802:%.*]]
// SIMD-ONLY0:       if.then4801:
// SIMD-ONLY0-NEXT:    [[TMP3520:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3520]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4802]]
// SIMD-ONLY0:       if.end4802:
// SIMD-ONLY0-NEXT:    [[TMP3521:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3521]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3522:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3523:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4803:%.*]] = icmp eq i64 [[TMP3522]], [[TMP3523]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4803]], label [[IF_THEN4805:%.*]], label [[IF_END4806:%.*]]
// SIMD-ONLY0:       if.then4805:
// SIMD-ONLY0-NEXT:    [[TMP3524:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3524]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4806]]
// SIMD-ONLY0:       if.end4806:
// SIMD-ONLY0-NEXT:    [[TMP3525:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3525]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3526:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3527:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4807:%.*]] = icmp eq i64 [[TMP3526]], [[TMP3527]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4807]], label [[IF_THEN4809:%.*]], label [[IF_ELSE4810:%.*]]
// SIMD-ONLY0:       if.then4809:
// SIMD-ONLY0-NEXT:    [[TMP3528:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3528]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4811:%.*]]
// SIMD-ONLY0:       if.else4810:
// SIMD-ONLY0-NEXT:    [[TMP3529:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3529]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4811]]
// SIMD-ONLY0:       if.end4811:
// SIMD-ONLY0-NEXT:    [[TMP3530:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3531:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4812:%.*]] = icmp eq i64 [[TMP3530]], [[TMP3531]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4812]], label [[IF_THEN4814:%.*]], label [[IF_ELSE4815:%.*]]
// SIMD-ONLY0:       if.then4814:
// SIMD-ONLY0-NEXT:    [[TMP3532:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3532]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4816:%.*]]
// SIMD-ONLY0:       if.else4815:
// SIMD-ONLY0-NEXT:    [[TMP3533:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3533]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4816]]
// SIMD-ONLY0:       if.end4816:
// SIMD-ONLY0-NEXT:    [[TMP3534:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3535:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4817:%.*]] = icmp eq i64 [[TMP3534]], [[TMP3535]]
// SIMD-ONLY0-NEXT:    [[CONV4818:%.*]] = zext i1 [[CMP4817]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4819:%.*]] = sext i32 [[CONV4818]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4819]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3536:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4820:%.*]] = icmp ne i64 [[TMP3536]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4820]], label [[IF_THEN4821:%.*]], label [[IF_END4822:%.*]]
// SIMD-ONLY0:       if.then4821:
// SIMD-ONLY0-NEXT:    [[TMP3537:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3537]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4822]]
// SIMD-ONLY0:       if.end4822:
// SIMD-ONLY0-NEXT:    [[TMP3538:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3539:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4823:%.*]] = icmp eq i64 [[TMP3538]], [[TMP3539]]
// SIMD-ONLY0-NEXT:    [[CONV4824:%.*]] = zext i1 [[CMP4823]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4825:%.*]] = sext i32 [[CONV4824]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4825]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3540:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4826:%.*]] = icmp ne i64 [[TMP3540]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4826]], label [[IF_THEN4827:%.*]], label [[IF_END4828:%.*]]
// SIMD-ONLY0:       if.then4827:
// SIMD-ONLY0-NEXT:    [[TMP3541:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3541]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4828]]
// SIMD-ONLY0:       if.end4828:
// SIMD-ONLY0-NEXT:    [[TMP3542:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3543:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4829:%.*]] = icmp eq i64 [[TMP3542]], [[TMP3543]]
// SIMD-ONLY0-NEXT:    [[CONV4830:%.*]] = zext i1 [[CMP4829]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4831:%.*]] = sext i32 [[CONV4830]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4831]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3544:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4832:%.*]] = icmp ne i64 [[TMP3544]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4832]], label [[IF_THEN4833:%.*]], label [[IF_ELSE4834:%.*]]
// SIMD-ONLY0:       if.then4833:
// SIMD-ONLY0-NEXT:    [[TMP3545:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3545]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4835:%.*]]
// SIMD-ONLY0:       if.else4834:
// SIMD-ONLY0-NEXT:    [[TMP3546:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3546]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4835]]
// SIMD-ONLY0:       if.end4835:
// SIMD-ONLY0-NEXT:    [[TMP3547:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3548:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4836:%.*]] = icmp eq i64 [[TMP3547]], [[TMP3548]]
// SIMD-ONLY0-NEXT:    [[CONV4837:%.*]] = zext i1 [[CMP4836]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4838:%.*]] = sext i32 [[CONV4837]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4838]], ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3549:%.*]] = load i64, ptr [[ULR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4839:%.*]] = icmp ne i64 [[TMP3549]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4839]], label [[IF_THEN4840:%.*]], label [[IF_ELSE4841:%.*]]
// SIMD-ONLY0:       if.then4840:
// SIMD-ONLY0-NEXT:    [[TMP3550:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3550]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4842:%.*]]
// SIMD-ONLY0:       if.else4841:
// SIMD-ONLY0-NEXT:    [[TMP3551:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3551]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4842]]
// SIMD-ONLY0:       if.end4842:
// SIMD-ONLY0-NEXT:    [[TMP3552:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3552]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3553:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3554:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4843:%.*]] = icmp sgt i64 [[TMP3553]], [[TMP3554]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4843]], label [[IF_THEN4845:%.*]], label [[IF_END4846:%.*]]
// SIMD-ONLY0:       if.then4845:
// SIMD-ONLY0-NEXT:    [[TMP3555:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3555]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4846]]
// SIMD-ONLY0:       if.end4846:
// SIMD-ONLY0-NEXT:    [[TMP3556:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3556]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3557:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3558:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4847:%.*]] = icmp sgt i64 [[TMP3557]], [[TMP3558]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4847]], label [[IF_THEN4849:%.*]], label [[IF_END4850:%.*]]
// SIMD-ONLY0:       if.then4849:
// SIMD-ONLY0-NEXT:    [[TMP3559:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3559]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4850]]
// SIMD-ONLY0:       if.end4850:
// SIMD-ONLY0-NEXT:    [[TMP3560:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3560]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3561:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3562:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4851:%.*]] = icmp slt i64 [[TMP3561]], [[TMP3562]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4851]], label [[IF_THEN4853:%.*]], label [[IF_END4854:%.*]]
// SIMD-ONLY0:       if.then4853:
// SIMD-ONLY0-NEXT:    [[TMP3563:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3563]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4854]]
// SIMD-ONLY0:       if.end4854:
// SIMD-ONLY0-NEXT:    [[TMP3564:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3564]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3565:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3566:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4855:%.*]] = icmp slt i64 [[TMP3565]], [[TMP3566]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4855]], label [[IF_THEN4857:%.*]], label [[IF_END4858:%.*]]
// SIMD-ONLY0:       if.then4857:
// SIMD-ONLY0-NEXT:    [[TMP3567:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3567]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4858]]
// SIMD-ONLY0:       if.end4858:
// SIMD-ONLY0-NEXT:    [[TMP3568:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3568]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3569:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3570:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4859:%.*]] = icmp eq i64 [[TMP3569]], [[TMP3570]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4859]], label [[IF_THEN4861:%.*]], label [[IF_END4862:%.*]]
// SIMD-ONLY0:       if.then4861:
// SIMD-ONLY0-NEXT:    [[TMP3571:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3571]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4862]]
// SIMD-ONLY0:       if.end4862:
// SIMD-ONLY0-NEXT:    [[TMP3572:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3572]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3573:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3574:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4863:%.*]] = icmp eq i64 [[TMP3573]], [[TMP3574]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4863]], label [[IF_THEN4865:%.*]], label [[IF_END4866:%.*]]
// SIMD-ONLY0:       if.then4865:
// SIMD-ONLY0-NEXT:    [[TMP3575:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3575]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4866]]
// SIMD-ONLY0:       if.end4866:
// SIMD-ONLY0-NEXT:    [[TMP3576:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3577:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4867:%.*]] = icmp sgt i64 [[TMP3576]], [[TMP3577]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4867]], label [[IF_THEN4869:%.*]], label [[IF_END4870:%.*]]
// SIMD-ONLY0:       if.then4869:
// SIMD-ONLY0-NEXT:    [[TMP3578:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3578]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4870]]
// SIMD-ONLY0:       if.end4870:
// SIMD-ONLY0-NEXT:    [[TMP3579:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3579]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3580:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3581:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4871:%.*]] = icmp sgt i64 [[TMP3580]], [[TMP3581]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4871]], label [[IF_THEN4873:%.*]], label [[IF_END4874:%.*]]
// SIMD-ONLY0:       if.then4873:
// SIMD-ONLY0-NEXT:    [[TMP3582:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3582]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4874]]
// SIMD-ONLY0:       if.end4874:
// SIMD-ONLY0-NEXT:    [[TMP3583:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3583]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3584:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3585:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4875:%.*]] = icmp slt i64 [[TMP3584]], [[TMP3585]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4875]], label [[IF_THEN4877:%.*]], label [[IF_END4878:%.*]]
// SIMD-ONLY0:       if.then4877:
// SIMD-ONLY0-NEXT:    [[TMP3586:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3586]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4878]]
// SIMD-ONLY0:       if.end4878:
// SIMD-ONLY0-NEXT:    [[TMP3587:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3587]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3588:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3589:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4879:%.*]] = icmp slt i64 [[TMP3588]], [[TMP3589]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4879]], label [[IF_THEN4881:%.*]], label [[IF_END4882:%.*]]
// SIMD-ONLY0:       if.then4881:
// SIMD-ONLY0-NEXT:    [[TMP3590:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3590]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4882]]
// SIMD-ONLY0:       if.end4882:
// SIMD-ONLY0-NEXT:    [[TMP3591:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3591]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3592:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3593:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4883:%.*]] = icmp eq i64 [[TMP3592]], [[TMP3593]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4883]], label [[IF_THEN4885:%.*]], label [[IF_END4886:%.*]]
// SIMD-ONLY0:       if.then4885:
// SIMD-ONLY0-NEXT:    [[TMP3594:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3594]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4886]]
// SIMD-ONLY0:       if.end4886:
// SIMD-ONLY0-NEXT:    [[TMP3595:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3595]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3596:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3597:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4887:%.*]] = icmp eq i64 [[TMP3596]], [[TMP3597]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4887]], label [[IF_THEN4889:%.*]], label [[IF_END4890:%.*]]
// SIMD-ONLY0:       if.then4889:
// SIMD-ONLY0-NEXT:    [[TMP3598:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3598]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4890]]
// SIMD-ONLY0:       if.end4890:
// SIMD-ONLY0-NEXT:    [[TMP3599:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3599]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3600:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3601:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4891:%.*]] = icmp eq i64 [[TMP3600]], [[TMP3601]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4891]], label [[IF_THEN4893:%.*]], label [[IF_ELSE4894:%.*]]
// SIMD-ONLY0:       if.then4893:
// SIMD-ONLY0-NEXT:    [[TMP3602:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3602]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4895:%.*]]
// SIMD-ONLY0:       if.else4894:
// SIMD-ONLY0-NEXT:    [[TMP3603:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3603]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4895]]
// SIMD-ONLY0:       if.end4895:
// SIMD-ONLY0-NEXT:    [[TMP3604:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3605:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4896:%.*]] = icmp eq i64 [[TMP3604]], [[TMP3605]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4896]], label [[IF_THEN4898:%.*]], label [[IF_ELSE4899:%.*]]
// SIMD-ONLY0:       if.then4898:
// SIMD-ONLY0-NEXT:    [[TMP3606:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3606]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4900:%.*]]
// SIMD-ONLY0:       if.else4899:
// SIMD-ONLY0-NEXT:    [[TMP3607:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3607]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4900]]
// SIMD-ONLY0:       if.end4900:
// SIMD-ONLY0-NEXT:    [[TMP3608:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3609:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4901:%.*]] = icmp eq i64 [[TMP3608]], [[TMP3609]]
// SIMD-ONLY0-NEXT:    [[CONV4902:%.*]] = zext i1 [[CMP4901]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4903:%.*]] = sext i32 [[CONV4902]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4903]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3610:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4904:%.*]] = icmp ne i64 [[TMP3610]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4904]], label [[IF_THEN4905:%.*]], label [[IF_END4906:%.*]]
// SIMD-ONLY0:       if.then4905:
// SIMD-ONLY0-NEXT:    [[TMP3611:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3611]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4906]]
// SIMD-ONLY0:       if.end4906:
// SIMD-ONLY0-NEXT:    [[TMP3612:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3613:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4907:%.*]] = icmp eq i64 [[TMP3612]], [[TMP3613]]
// SIMD-ONLY0-NEXT:    [[CONV4908:%.*]] = zext i1 [[CMP4907]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4909:%.*]] = sext i32 [[CONV4908]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4909]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3614:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4910:%.*]] = icmp ne i64 [[TMP3614]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4910]], label [[IF_THEN4911:%.*]], label [[IF_END4912:%.*]]
// SIMD-ONLY0:       if.then4911:
// SIMD-ONLY0-NEXT:    [[TMP3615:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3615]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4912]]
// SIMD-ONLY0:       if.end4912:
// SIMD-ONLY0-NEXT:    [[TMP3616:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3617:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4913:%.*]] = icmp eq i64 [[TMP3616]], [[TMP3617]]
// SIMD-ONLY0-NEXT:    [[CONV4914:%.*]] = zext i1 [[CMP4913]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4915:%.*]] = sext i32 [[CONV4914]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4915]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3618:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4916:%.*]] = icmp ne i64 [[TMP3618]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4916]], label [[IF_THEN4917:%.*]], label [[IF_ELSE4918:%.*]]
// SIMD-ONLY0:       if.then4917:
// SIMD-ONLY0-NEXT:    [[TMP3619:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3619]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4919:%.*]]
// SIMD-ONLY0:       if.else4918:
// SIMD-ONLY0-NEXT:    [[TMP3620:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3620]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4919]]
// SIMD-ONLY0:       if.end4919:
// SIMD-ONLY0-NEXT:    [[TMP3621:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3622:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4920:%.*]] = icmp eq i64 [[TMP3621]], [[TMP3622]]
// SIMD-ONLY0-NEXT:    [[CONV4921:%.*]] = zext i1 [[CMP4920]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4922:%.*]] = sext i32 [[CONV4921]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4922]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3623:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4923:%.*]] = icmp ne i64 [[TMP3623]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4923]], label [[IF_THEN4924:%.*]], label [[IF_ELSE4925:%.*]]
// SIMD-ONLY0:       if.then4924:
// SIMD-ONLY0-NEXT:    [[TMP3624:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3624]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4926:%.*]]
// SIMD-ONLY0:       if.else4925:
// SIMD-ONLY0-NEXT:    [[TMP3625:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3625]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4926]]
// SIMD-ONLY0:       if.end4926:
// SIMD-ONLY0-NEXT:    [[TMP3626:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3626]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3627:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3628:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4927:%.*]] = icmp sgt i64 [[TMP3627]], [[TMP3628]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4927]], label [[IF_THEN4929:%.*]], label [[IF_END4930:%.*]]
// SIMD-ONLY0:       if.then4929:
// SIMD-ONLY0-NEXT:    [[TMP3629:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3629]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4930]]
// SIMD-ONLY0:       if.end4930:
// SIMD-ONLY0-NEXT:    [[TMP3630:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3630]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3631:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3632:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4931:%.*]] = icmp sgt i64 [[TMP3631]], [[TMP3632]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4931]], label [[IF_THEN4933:%.*]], label [[IF_END4934:%.*]]
// SIMD-ONLY0:       if.then4933:
// SIMD-ONLY0-NEXT:    [[TMP3633:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3633]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4934]]
// SIMD-ONLY0:       if.end4934:
// SIMD-ONLY0-NEXT:    [[TMP3634:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3634]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3635:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3636:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4935:%.*]] = icmp slt i64 [[TMP3635]], [[TMP3636]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4935]], label [[IF_THEN4937:%.*]], label [[IF_END4938:%.*]]
// SIMD-ONLY0:       if.then4937:
// SIMD-ONLY0-NEXT:    [[TMP3637:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3637]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4938]]
// SIMD-ONLY0:       if.end4938:
// SIMD-ONLY0-NEXT:    [[TMP3638:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3638]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3639:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3640:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4939:%.*]] = icmp slt i64 [[TMP3639]], [[TMP3640]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4939]], label [[IF_THEN4941:%.*]], label [[IF_END4942:%.*]]
// SIMD-ONLY0:       if.then4941:
// SIMD-ONLY0-NEXT:    [[TMP3641:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3641]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4942]]
// SIMD-ONLY0:       if.end4942:
// SIMD-ONLY0-NEXT:    [[TMP3642:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3642]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3643:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3644:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4943:%.*]] = icmp eq i64 [[TMP3643]], [[TMP3644]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4943]], label [[IF_THEN4945:%.*]], label [[IF_END4946:%.*]]
// SIMD-ONLY0:       if.then4945:
// SIMD-ONLY0-NEXT:    [[TMP3645:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3645]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4946]]
// SIMD-ONLY0:       if.end4946:
// SIMD-ONLY0-NEXT:    [[TMP3646:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3646]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3647:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3648:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4947:%.*]] = icmp eq i64 [[TMP3647]], [[TMP3648]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4947]], label [[IF_THEN4949:%.*]], label [[IF_END4950:%.*]]
// SIMD-ONLY0:       if.then4949:
// SIMD-ONLY0-NEXT:    [[TMP3649:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3649]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4950]]
// SIMD-ONLY0:       if.end4950:
// SIMD-ONLY0-NEXT:    [[TMP3650:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3651:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4951:%.*]] = icmp sgt i64 [[TMP3650]], [[TMP3651]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4951]], label [[IF_THEN4953:%.*]], label [[IF_END4954:%.*]]
// SIMD-ONLY0:       if.then4953:
// SIMD-ONLY0-NEXT:    [[TMP3652:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3652]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4954]]
// SIMD-ONLY0:       if.end4954:
// SIMD-ONLY0-NEXT:    [[TMP3653:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3653]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3654:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3655:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4955:%.*]] = icmp sgt i64 [[TMP3654]], [[TMP3655]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4955]], label [[IF_THEN4957:%.*]], label [[IF_END4958:%.*]]
// SIMD-ONLY0:       if.then4957:
// SIMD-ONLY0-NEXT:    [[TMP3656:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3656]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4958]]
// SIMD-ONLY0:       if.end4958:
// SIMD-ONLY0-NEXT:    [[TMP3657:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3657]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3658:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3659:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4959:%.*]] = icmp slt i64 [[TMP3658]], [[TMP3659]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4959]], label [[IF_THEN4961:%.*]], label [[IF_END4962:%.*]]
// SIMD-ONLY0:       if.then4961:
// SIMD-ONLY0-NEXT:    [[TMP3660:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3660]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4962]]
// SIMD-ONLY0:       if.end4962:
// SIMD-ONLY0-NEXT:    [[TMP3661:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3661]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3662:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3663:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4963:%.*]] = icmp slt i64 [[TMP3662]], [[TMP3663]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4963]], label [[IF_THEN4965:%.*]], label [[IF_END4966:%.*]]
// SIMD-ONLY0:       if.then4965:
// SIMD-ONLY0-NEXT:    [[TMP3664:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3664]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4966]]
// SIMD-ONLY0:       if.end4966:
// SIMD-ONLY0-NEXT:    [[TMP3665:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3665]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3666:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3667:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4967:%.*]] = icmp eq i64 [[TMP3666]], [[TMP3667]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4967]], label [[IF_THEN4969:%.*]], label [[IF_END4970:%.*]]
// SIMD-ONLY0:       if.then4969:
// SIMD-ONLY0-NEXT:    [[TMP3668:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3668]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4970]]
// SIMD-ONLY0:       if.end4970:
// SIMD-ONLY0-NEXT:    [[TMP3669:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3669]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3670:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3671:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4971:%.*]] = icmp eq i64 [[TMP3670]], [[TMP3671]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4971]], label [[IF_THEN4973:%.*]], label [[IF_END4974:%.*]]
// SIMD-ONLY0:       if.then4973:
// SIMD-ONLY0-NEXT:    [[TMP3672:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3672]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4974]]
// SIMD-ONLY0:       if.end4974:
// SIMD-ONLY0-NEXT:    [[TMP3673:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3673]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3674:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3675:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4975:%.*]] = icmp eq i64 [[TMP3674]], [[TMP3675]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4975]], label [[IF_THEN4977:%.*]], label [[IF_ELSE4978:%.*]]
// SIMD-ONLY0:       if.then4977:
// SIMD-ONLY0-NEXT:    [[TMP3676:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3676]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4979:%.*]]
// SIMD-ONLY0:       if.else4978:
// SIMD-ONLY0-NEXT:    [[TMP3677:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3677]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4979]]
// SIMD-ONLY0:       if.end4979:
// SIMD-ONLY0-NEXT:    [[TMP3678:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3679:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4980:%.*]] = icmp eq i64 [[TMP3678]], [[TMP3679]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP4980]], label [[IF_THEN4982:%.*]], label [[IF_ELSE4983:%.*]]
// SIMD-ONLY0:       if.then4982:
// SIMD-ONLY0-NEXT:    [[TMP3680:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3680]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4984:%.*]]
// SIMD-ONLY0:       if.else4983:
// SIMD-ONLY0-NEXT:    [[TMP3681:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3681]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4984]]
// SIMD-ONLY0:       if.end4984:
// SIMD-ONLY0-NEXT:    [[TMP3682:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3683:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4985:%.*]] = icmp eq i64 [[TMP3682]], [[TMP3683]]
// SIMD-ONLY0-NEXT:    [[CONV4986:%.*]] = zext i1 [[CMP4985]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4987:%.*]] = sext i32 [[CONV4986]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4987]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3684:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4988:%.*]] = icmp ne i64 [[TMP3684]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4988]], label [[IF_THEN4989:%.*]], label [[IF_END4990:%.*]]
// SIMD-ONLY0:       if.then4989:
// SIMD-ONLY0-NEXT:    [[TMP3685:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3685]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4990]]
// SIMD-ONLY0:       if.end4990:
// SIMD-ONLY0-NEXT:    [[TMP3686:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3687:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4991:%.*]] = icmp eq i64 [[TMP3686]], [[TMP3687]]
// SIMD-ONLY0-NEXT:    [[CONV4992:%.*]] = zext i1 [[CMP4991]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4993:%.*]] = sext i32 [[CONV4992]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4993]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3688:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL4994:%.*]] = icmp ne i64 [[TMP3688]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL4994]], label [[IF_THEN4995:%.*]], label [[IF_END4996:%.*]]
// SIMD-ONLY0:       if.then4995:
// SIMD-ONLY0-NEXT:    [[TMP3689:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3689]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END4996]]
// SIMD-ONLY0:       if.end4996:
// SIMD-ONLY0-NEXT:    [[TMP3690:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3691:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP4997:%.*]] = icmp eq i64 [[TMP3690]], [[TMP3691]]
// SIMD-ONLY0-NEXT:    [[CONV4998:%.*]] = zext i1 [[CMP4997]] to i32
// SIMD-ONLY0-NEXT:    [[CONV4999:%.*]] = sext i32 [[CONV4998]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV4999]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3692:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5000:%.*]] = icmp ne i64 [[TMP3692]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5000]], label [[IF_THEN5001:%.*]], label [[IF_ELSE5002:%.*]]
// SIMD-ONLY0:       if.then5001:
// SIMD-ONLY0-NEXT:    [[TMP3693:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3693]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5003:%.*]]
// SIMD-ONLY0:       if.else5002:
// SIMD-ONLY0-NEXT:    [[TMP3694:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3694]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5003]]
// SIMD-ONLY0:       if.end5003:
// SIMD-ONLY0-NEXT:    [[TMP3695:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3696:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5004:%.*]] = icmp eq i64 [[TMP3695]], [[TMP3696]]
// SIMD-ONLY0-NEXT:    [[CONV5005:%.*]] = zext i1 [[CMP5004]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5006:%.*]] = sext i32 [[CONV5005]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5006]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3697:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5007:%.*]] = icmp ne i64 [[TMP3697]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5007]], label [[IF_THEN5008:%.*]], label [[IF_ELSE5009:%.*]]
// SIMD-ONLY0:       if.then5008:
// SIMD-ONLY0-NEXT:    [[TMP3698:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3698]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5010:%.*]]
// SIMD-ONLY0:       if.else5009:
// SIMD-ONLY0-NEXT:    [[TMP3699:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3699]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5010]]
// SIMD-ONLY0:       if.end5010:
// SIMD-ONLY0-NEXT:    [[TMP3700:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3700]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3701:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3702:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5011:%.*]] = icmp sgt i64 [[TMP3701]], [[TMP3702]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5011]], label [[IF_THEN5013:%.*]], label [[IF_END5014:%.*]]
// SIMD-ONLY0:       if.then5013:
// SIMD-ONLY0-NEXT:    [[TMP3703:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3703]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5014]]
// SIMD-ONLY0:       if.end5014:
// SIMD-ONLY0-NEXT:    [[TMP3704:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3704]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3705:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3706:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5015:%.*]] = icmp sgt i64 [[TMP3705]], [[TMP3706]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5015]], label [[IF_THEN5017:%.*]], label [[IF_END5018:%.*]]
// SIMD-ONLY0:       if.then5017:
// SIMD-ONLY0-NEXT:    [[TMP3707:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3707]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5018]]
// SIMD-ONLY0:       if.end5018:
// SIMD-ONLY0-NEXT:    [[TMP3708:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3708]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3709:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3710:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5019:%.*]] = icmp slt i64 [[TMP3709]], [[TMP3710]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5019]], label [[IF_THEN5021:%.*]], label [[IF_END5022:%.*]]
// SIMD-ONLY0:       if.then5021:
// SIMD-ONLY0-NEXT:    [[TMP3711:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3711]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5022]]
// SIMD-ONLY0:       if.end5022:
// SIMD-ONLY0-NEXT:    [[TMP3712:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3712]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3713:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3714:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5023:%.*]] = icmp slt i64 [[TMP3713]], [[TMP3714]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5023]], label [[IF_THEN5025:%.*]], label [[IF_END5026:%.*]]
// SIMD-ONLY0:       if.then5025:
// SIMD-ONLY0-NEXT:    [[TMP3715:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3715]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5026]]
// SIMD-ONLY0:       if.end5026:
// SIMD-ONLY0-NEXT:    [[TMP3716:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3716]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3717:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3718:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5027:%.*]] = icmp eq i64 [[TMP3717]], [[TMP3718]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5027]], label [[IF_THEN5029:%.*]], label [[IF_END5030:%.*]]
// SIMD-ONLY0:       if.then5029:
// SIMD-ONLY0-NEXT:    [[TMP3719:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3719]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5030]]
// SIMD-ONLY0:       if.end5030:
// SIMD-ONLY0-NEXT:    [[TMP3720:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3720]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3721:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3722:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5031:%.*]] = icmp eq i64 [[TMP3721]], [[TMP3722]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5031]], label [[IF_THEN5033:%.*]], label [[IF_END5034:%.*]]
// SIMD-ONLY0:       if.then5033:
// SIMD-ONLY0-NEXT:    [[TMP3723:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3723]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5034]]
// SIMD-ONLY0:       if.end5034:
// SIMD-ONLY0-NEXT:    [[TMP3724:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3725:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5035:%.*]] = icmp sgt i64 [[TMP3724]], [[TMP3725]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5035]], label [[IF_THEN5037:%.*]], label [[IF_END5038:%.*]]
// SIMD-ONLY0:       if.then5037:
// SIMD-ONLY0-NEXT:    [[TMP3726:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3726]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5038]]
// SIMD-ONLY0:       if.end5038:
// SIMD-ONLY0-NEXT:    [[TMP3727:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3727]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3728:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3729:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5039:%.*]] = icmp sgt i64 [[TMP3728]], [[TMP3729]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5039]], label [[IF_THEN5041:%.*]], label [[IF_END5042:%.*]]
// SIMD-ONLY0:       if.then5041:
// SIMD-ONLY0-NEXT:    [[TMP3730:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3730]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5042]]
// SIMD-ONLY0:       if.end5042:
// SIMD-ONLY0-NEXT:    [[TMP3731:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3731]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3732:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3733:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5043:%.*]] = icmp slt i64 [[TMP3732]], [[TMP3733]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5043]], label [[IF_THEN5045:%.*]], label [[IF_END5046:%.*]]
// SIMD-ONLY0:       if.then5045:
// SIMD-ONLY0-NEXT:    [[TMP3734:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3734]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5046]]
// SIMD-ONLY0:       if.end5046:
// SIMD-ONLY0-NEXT:    [[TMP3735:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3735]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3736:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3737:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5047:%.*]] = icmp slt i64 [[TMP3736]], [[TMP3737]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5047]], label [[IF_THEN5049:%.*]], label [[IF_END5050:%.*]]
// SIMD-ONLY0:       if.then5049:
// SIMD-ONLY0-NEXT:    [[TMP3738:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3738]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5050]]
// SIMD-ONLY0:       if.end5050:
// SIMD-ONLY0-NEXT:    [[TMP3739:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3739]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3740:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3741:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5051:%.*]] = icmp eq i64 [[TMP3740]], [[TMP3741]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5051]], label [[IF_THEN5053:%.*]], label [[IF_END5054:%.*]]
// SIMD-ONLY0:       if.then5053:
// SIMD-ONLY0-NEXT:    [[TMP3742:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3742]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5054]]
// SIMD-ONLY0:       if.end5054:
// SIMD-ONLY0-NEXT:    [[TMP3743:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3743]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3744:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3745:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5055:%.*]] = icmp eq i64 [[TMP3744]], [[TMP3745]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5055]], label [[IF_THEN5057:%.*]], label [[IF_END5058:%.*]]
// SIMD-ONLY0:       if.then5057:
// SIMD-ONLY0-NEXT:    [[TMP3746:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3746]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5058]]
// SIMD-ONLY0:       if.end5058:
// SIMD-ONLY0-NEXT:    [[TMP3747:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3747]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3748:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3749:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5059:%.*]] = icmp eq i64 [[TMP3748]], [[TMP3749]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5059]], label [[IF_THEN5061:%.*]], label [[IF_ELSE5062:%.*]]
// SIMD-ONLY0:       if.then5061:
// SIMD-ONLY0-NEXT:    [[TMP3750:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3750]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5063:%.*]]
// SIMD-ONLY0:       if.else5062:
// SIMD-ONLY0-NEXT:    [[TMP3751:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3751]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5063]]
// SIMD-ONLY0:       if.end5063:
// SIMD-ONLY0-NEXT:    [[TMP3752:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3753:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5064:%.*]] = icmp eq i64 [[TMP3752]], [[TMP3753]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5064]], label [[IF_THEN5066:%.*]], label [[IF_ELSE5067:%.*]]
// SIMD-ONLY0:       if.then5066:
// SIMD-ONLY0-NEXT:    [[TMP3754:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3754]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5068:%.*]]
// SIMD-ONLY0:       if.else5067:
// SIMD-ONLY0-NEXT:    [[TMP3755:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3755]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5068]]
// SIMD-ONLY0:       if.end5068:
// SIMD-ONLY0-NEXT:    [[TMP3756:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3757:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5069:%.*]] = icmp eq i64 [[TMP3756]], [[TMP3757]]
// SIMD-ONLY0-NEXT:    [[CONV5070:%.*]] = zext i1 [[CMP5069]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5071:%.*]] = sext i32 [[CONV5070]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5071]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3758:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5072:%.*]] = icmp ne i64 [[TMP3758]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5072]], label [[IF_THEN5073:%.*]], label [[IF_END5074:%.*]]
// SIMD-ONLY0:       if.then5073:
// SIMD-ONLY0-NEXT:    [[TMP3759:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3759]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5074]]
// SIMD-ONLY0:       if.end5074:
// SIMD-ONLY0-NEXT:    [[TMP3760:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3761:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5075:%.*]] = icmp eq i64 [[TMP3760]], [[TMP3761]]
// SIMD-ONLY0-NEXT:    [[CONV5076:%.*]] = zext i1 [[CMP5075]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5077:%.*]] = sext i32 [[CONV5076]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5077]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3762:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5078:%.*]] = icmp ne i64 [[TMP3762]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5078]], label [[IF_THEN5079:%.*]], label [[IF_END5080:%.*]]
// SIMD-ONLY0:       if.then5079:
// SIMD-ONLY0-NEXT:    [[TMP3763:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3763]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5080]]
// SIMD-ONLY0:       if.end5080:
// SIMD-ONLY0-NEXT:    [[TMP3764:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3765:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5081:%.*]] = icmp eq i64 [[TMP3764]], [[TMP3765]]
// SIMD-ONLY0-NEXT:    [[CONV5082:%.*]] = zext i1 [[CMP5081]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5083:%.*]] = sext i32 [[CONV5082]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5083]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3766:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5084:%.*]] = icmp ne i64 [[TMP3766]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5084]], label [[IF_THEN5085:%.*]], label [[IF_ELSE5086:%.*]]
// SIMD-ONLY0:       if.then5085:
// SIMD-ONLY0-NEXT:    [[TMP3767:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3767]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5087:%.*]]
// SIMD-ONLY0:       if.else5086:
// SIMD-ONLY0-NEXT:    [[TMP3768:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3768]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5087]]
// SIMD-ONLY0:       if.end5087:
// SIMD-ONLY0-NEXT:    [[TMP3769:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3770:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5088:%.*]] = icmp eq i64 [[TMP3769]], [[TMP3770]]
// SIMD-ONLY0-NEXT:    [[CONV5089:%.*]] = zext i1 [[CMP5088]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5090:%.*]] = sext i32 [[CONV5089]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5090]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3771:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5091:%.*]] = icmp ne i64 [[TMP3771]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5091]], label [[IF_THEN5092:%.*]], label [[IF_ELSE5093:%.*]]
// SIMD-ONLY0:       if.then5092:
// SIMD-ONLY0-NEXT:    [[TMP3772:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3772]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5094:%.*]]
// SIMD-ONLY0:       if.else5093:
// SIMD-ONLY0-NEXT:    [[TMP3773:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3773]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5094]]
// SIMD-ONLY0:       if.end5094:
// SIMD-ONLY0-NEXT:    [[TMP3774:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3774]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3775:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3776:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5095:%.*]] = icmp sgt i64 [[TMP3775]], [[TMP3776]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5095]], label [[IF_THEN5097:%.*]], label [[IF_END5098:%.*]]
// SIMD-ONLY0:       if.then5097:
// SIMD-ONLY0-NEXT:    [[TMP3777:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3777]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5098]]
// SIMD-ONLY0:       if.end5098:
// SIMD-ONLY0-NEXT:    [[TMP3778:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3778]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3779:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3780:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5099:%.*]] = icmp sgt i64 [[TMP3779]], [[TMP3780]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5099]], label [[IF_THEN5101:%.*]], label [[IF_END5102:%.*]]
// SIMD-ONLY0:       if.then5101:
// SIMD-ONLY0-NEXT:    [[TMP3781:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3781]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5102]]
// SIMD-ONLY0:       if.end5102:
// SIMD-ONLY0-NEXT:    [[TMP3782:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3782]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3783:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3784:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5103:%.*]] = icmp slt i64 [[TMP3783]], [[TMP3784]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5103]], label [[IF_THEN5105:%.*]], label [[IF_END5106:%.*]]
// SIMD-ONLY0:       if.then5105:
// SIMD-ONLY0-NEXT:    [[TMP3785:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3785]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5106]]
// SIMD-ONLY0:       if.end5106:
// SIMD-ONLY0-NEXT:    [[TMP3786:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3786]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3787:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3788:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5107:%.*]] = icmp slt i64 [[TMP3787]], [[TMP3788]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5107]], label [[IF_THEN5109:%.*]], label [[IF_END5110:%.*]]
// SIMD-ONLY0:       if.then5109:
// SIMD-ONLY0-NEXT:    [[TMP3789:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3789]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5110]]
// SIMD-ONLY0:       if.end5110:
// SIMD-ONLY0-NEXT:    [[TMP3790:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3790]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3791:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3792:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5111:%.*]] = icmp eq i64 [[TMP3791]], [[TMP3792]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5111]], label [[IF_THEN5113:%.*]], label [[IF_END5114:%.*]]
// SIMD-ONLY0:       if.then5113:
// SIMD-ONLY0-NEXT:    [[TMP3793:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3793]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5114]]
// SIMD-ONLY0:       if.end5114:
// SIMD-ONLY0-NEXT:    [[TMP3794:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3794]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3795:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3796:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5115:%.*]] = icmp eq i64 [[TMP3795]], [[TMP3796]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5115]], label [[IF_THEN5117:%.*]], label [[IF_END5118:%.*]]
// SIMD-ONLY0:       if.then5117:
// SIMD-ONLY0-NEXT:    [[TMP3797:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3797]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5118]]
// SIMD-ONLY0:       if.end5118:
// SIMD-ONLY0-NEXT:    [[TMP3798:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3799:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5119:%.*]] = icmp sgt i64 [[TMP3798]], [[TMP3799]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5119]], label [[IF_THEN5121:%.*]], label [[IF_END5122:%.*]]
// SIMD-ONLY0:       if.then5121:
// SIMD-ONLY0-NEXT:    [[TMP3800:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3800]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5122]]
// SIMD-ONLY0:       if.end5122:
// SIMD-ONLY0-NEXT:    [[TMP3801:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3801]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3802:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3803:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5123:%.*]] = icmp sgt i64 [[TMP3802]], [[TMP3803]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5123]], label [[IF_THEN5125:%.*]], label [[IF_END5126:%.*]]
// SIMD-ONLY0:       if.then5125:
// SIMD-ONLY0-NEXT:    [[TMP3804:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3804]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5126]]
// SIMD-ONLY0:       if.end5126:
// SIMD-ONLY0-NEXT:    [[TMP3805:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3805]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3806:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3807:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5127:%.*]] = icmp slt i64 [[TMP3806]], [[TMP3807]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5127]], label [[IF_THEN5129:%.*]], label [[IF_END5130:%.*]]
// SIMD-ONLY0:       if.then5129:
// SIMD-ONLY0-NEXT:    [[TMP3808:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3808]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5130]]
// SIMD-ONLY0:       if.end5130:
// SIMD-ONLY0-NEXT:    [[TMP3809:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3809]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3810:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3811:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5131:%.*]] = icmp slt i64 [[TMP3810]], [[TMP3811]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5131]], label [[IF_THEN5133:%.*]], label [[IF_END5134:%.*]]
// SIMD-ONLY0:       if.then5133:
// SIMD-ONLY0-NEXT:    [[TMP3812:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3812]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5134]]
// SIMD-ONLY0:       if.end5134:
// SIMD-ONLY0-NEXT:    [[TMP3813:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3813]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3814:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3815:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5135:%.*]] = icmp eq i64 [[TMP3814]], [[TMP3815]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5135]], label [[IF_THEN5137:%.*]], label [[IF_END5138:%.*]]
// SIMD-ONLY0:       if.then5137:
// SIMD-ONLY0-NEXT:    [[TMP3816:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3816]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5138]]
// SIMD-ONLY0:       if.end5138:
// SIMD-ONLY0-NEXT:    [[TMP3817:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3817]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3818:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3819:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5139:%.*]] = icmp eq i64 [[TMP3818]], [[TMP3819]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5139]], label [[IF_THEN5141:%.*]], label [[IF_END5142:%.*]]
// SIMD-ONLY0:       if.then5141:
// SIMD-ONLY0-NEXT:    [[TMP3820:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3820]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5142]]
// SIMD-ONLY0:       if.end5142:
// SIMD-ONLY0-NEXT:    [[TMP3821:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3821]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3822:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3823:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5143:%.*]] = icmp eq i64 [[TMP3822]], [[TMP3823]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5143]], label [[IF_THEN5145:%.*]], label [[IF_ELSE5146:%.*]]
// SIMD-ONLY0:       if.then5145:
// SIMD-ONLY0-NEXT:    [[TMP3824:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3824]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5147:%.*]]
// SIMD-ONLY0:       if.else5146:
// SIMD-ONLY0-NEXT:    [[TMP3825:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3825]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5147]]
// SIMD-ONLY0:       if.end5147:
// SIMD-ONLY0-NEXT:    [[TMP3826:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3827:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5148:%.*]] = icmp eq i64 [[TMP3826]], [[TMP3827]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5148]], label [[IF_THEN5150:%.*]], label [[IF_ELSE5151:%.*]]
// SIMD-ONLY0:       if.then5150:
// SIMD-ONLY0-NEXT:    [[TMP3828:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3828]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5152:%.*]]
// SIMD-ONLY0:       if.else5151:
// SIMD-ONLY0-NEXT:    [[TMP3829:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3829]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5152]]
// SIMD-ONLY0:       if.end5152:
// SIMD-ONLY0-NEXT:    [[TMP3830:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3831:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5153:%.*]] = icmp eq i64 [[TMP3830]], [[TMP3831]]
// SIMD-ONLY0-NEXT:    [[CONV5154:%.*]] = zext i1 [[CMP5153]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5155:%.*]] = sext i32 [[CONV5154]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5155]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3832:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5156:%.*]] = icmp ne i64 [[TMP3832]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5156]], label [[IF_THEN5157:%.*]], label [[IF_END5158:%.*]]
// SIMD-ONLY0:       if.then5157:
// SIMD-ONLY0-NEXT:    [[TMP3833:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3833]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5158]]
// SIMD-ONLY0:       if.end5158:
// SIMD-ONLY0-NEXT:    [[TMP3834:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3835:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5159:%.*]] = icmp eq i64 [[TMP3834]], [[TMP3835]]
// SIMD-ONLY0-NEXT:    [[CONV5160:%.*]] = zext i1 [[CMP5159]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5161:%.*]] = sext i32 [[CONV5160]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5161]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3836:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5162:%.*]] = icmp ne i64 [[TMP3836]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5162]], label [[IF_THEN5163:%.*]], label [[IF_END5164:%.*]]
// SIMD-ONLY0:       if.then5163:
// SIMD-ONLY0-NEXT:    [[TMP3837:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3837]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5164]]
// SIMD-ONLY0:       if.end5164:
// SIMD-ONLY0-NEXT:    [[TMP3838:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3839:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5165:%.*]] = icmp eq i64 [[TMP3838]], [[TMP3839]]
// SIMD-ONLY0-NEXT:    [[CONV5166:%.*]] = zext i1 [[CMP5165]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5167:%.*]] = sext i32 [[CONV5166]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5167]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3840:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5168:%.*]] = icmp ne i64 [[TMP3840]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5168]], label [[IF_THEN5169:%.*]], label [[IF_ELSE5170:%.*]]
// SIMD-ONLY0:       if.then5169:
// SIMD-ONLY0-NEXT:    [[TMP3841:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3841]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5171:%.*]]
// SIMD-ONLY0:       if.else5170:
// SIMD-ONLY0-NEXT:    [[TMP3842:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3842]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5171]]
// SIMD-ONLY0:       if.end5171:
// SIMD-ONLY0-NEXT:    [[TMP3843:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3844:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5172:%.*]] = icmp eq i64 [[TMP3843]], [[TMP3844]]
// SIMD-ONLY0-NEXT:    [[CONV5173:%.*]] = zext i1 [[CMP5172]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5174:%.*]] = sext i32 [[CONV5173]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5174]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3845:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5175:%.*]] = icmp ne i64 [[TMP3845]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5175]], label [[IF_THEN5176:%.*]], label [[IF_ELSE5177:%.*]]
// SIMD-ONLY0:       if.then5176:
// SIMD-ONLY0-NEXT:    [[TMP3846:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3846]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5178:%.*]]
// SIMD-ONLY0:       if.else5177:
// SIMD-ONLY0-NEXT:    [[TMP3847:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3847]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5178]]
// SIMD-ONLY0:       if.end5178:
// SIMD-ONLY0-NEXT:    [[TMP3848:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3848]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3849:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3850:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5179:%.*]] = icmp sgt i64 [[TMP3849]], [[TMP3850]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5179]], label [[IF_THEN5181:%.*]], label [[IF_END5182:%.*]]
// SIMD-ONLY0:       if.then5181:
// SIMD-ONLY0-NEXT:    [[TMP3851:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3851]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5182]]
// SIMD-ONLY0:       if.end5182:
// SIMD-ONLY0-NEXT:    [[TMP3852:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3852]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3853:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3854:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5183:%.*]] = icmp sgt i64 [[TMP3853]], [[TMP3854]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5183]], label [[IF_THEN5185:%.*]], label [[IF_END5186:%.*]]
// SIMD-ONLY0:       if.then5185:
// SIMD-ONLY0-NEXT:    [[TMP3855:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3855]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5186]]
// SIMD-ONLY0:       if.end5186:
// SIMD-ONLY0-NEXT:    [[TMP3856:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3856]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3857:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3858:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5187:%.*]] = icmp slt i64 [[TMP3857]], [[TMP3858]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5187]], label [[IF_THEN5189:%.*]], label [[IF_END5190:%.*]]
// SIMD-ONLY0:       if.then5189:
// SIMD-ONLY0-NEXT:    [[TMP3859:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3859]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5190]]
// SIMD-ONLY0:       if.end5190:
// SIMD-ONLY0-NEXT:    [[TMP3860:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3860]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3861:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3862:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5191:%.*]] = icmp slt i64 [[TMP3861]], [[TMP3862]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5191]], label [[IF_THEN5193:%.*]], label [[IF_END5194:%.*]]
// SIMD-ONLY0:       if.then5193:
// SIMD-ONLY0-NEXT:    [[TMP3863:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3863]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5194]]
// SIMD-ONLY0:       if.end5194:
// SIMD-ONLY0-NEXT:    [[TMP3864:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3864]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3865:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3866:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5195:%.*]] = icmp eq i64 [[TMP3865]], [[TMP3866]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5195]], label [[IF_THEN5197:%.*]], label [[IF_END5198:%.*]]
// SIMD-ONLY0:       if.then5197:
// SIMD-ONLY0-NEXT:    [[TMP3867:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3867]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5198]]
// SIMD-ONLY0:       if.end5198:
// SIMD-ONLY0-NEXT:    [[TMP3868:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3868]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3869:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3870:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5199:%.*]] = icmp eq i64 [[TMP3869]], [[TMP3870]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5199]], label [[IF_THEN5201:%.*]], label [[IF_END5202:%.*]]
// SIMD-ONLY0:       if.then5201:
// SIMD-ONLY0-NEXT:    [[TMP3871:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3871]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5202]]
// SIMD-ONLY0:       if.end5202:
// SIMD-ONLY0-NEXT:    [[TMP3872:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3873:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5203:%.*]] = icmp sgt i64 [[TMP3872]], [[TMP3873]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5203]], label [[IF_THEN5205:%.*]], label [[IF_END5206:%.*]]
// SIMD-ONLY0:       if.then5205:
// SIMD-ONLY0-NEXT:    [[TMP3874:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3874]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5206]]
// SIMD-ONLY0:       if.end5206:
// SIMD-ONLY0-NEXT:    [[TMP3875:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3875]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3876:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3877:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5207:%.*]] = icmp sgt i64 [[TMP3876]], [[TMP3877]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5207]], label [[IF_THEN5209:%.*]], label [[IF_END5210:%.*]]
// SIMD-ONLY0:       if.then5209:
// SIMD-ONLY0-NEXT:    [[TMP3878:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3878]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5210]]
// SIMD-ONLY0:       if.end5210:
// SIMD-ONLY0-NEXT:    [[TMP3879:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3879]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3880:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3881:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5211:%.*]] = icmp slt i64 [[TMP3880]], [[TMP3881]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5211]], label [[IF_THEN5213:%.*]], label [[IF_END5214:%.*]]
// SIMD-ONLY0:       if.then5213:
// SIMD-ONLY0-NEXT:    [[TMP3882:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3882]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5214]]
// SIMD-ONLY0:       if.end5214:
// SIMD-ONLY0-NEXT:    [[TMP3883:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3883]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3884:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3885:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5215:%.*]] = icmp slt i64 [[TMP3884]], [[TMP3885]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5215]], label [[IF_THEN5217:%.*]], label [[IF_END5218:%.*]]
// SIMD-ONLY0:       if.then5217:
// SIMD-ONLY0-NEXT:    [[TMP3886:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3886]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5218]]
// SIMD-ONLY0:       if.end5218:
// SIMD-ONLY0-NEXT:    [[TMP3887:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3887]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3888:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3889:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5219:%.*]] = icmp eq i64 [[TMP3888]], [[TMP3889]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5219]], label [[IF_THEN5221:%.*]], label [[IF_END5222:%.*]]
// SIMD-ONLY0:       if.then5221:
// SIMD-ONLY0-NEXT:    [[TMP3890:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3890]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5222]]
// SIMD-ONLY0:       if.end5222:
// SIMD-ONLY0-NEXT:    [[TMP3891:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3891]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3892:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3893:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5223:%.*]] = icmp eq i64 [[TMP3892]], [[TMP3893]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5223]], label [[IF_THEN5225:%.*]], label [[IF_END5226:%.*]]
// SIMD-ONLY0:       if.then5225:
// SIMD-ONLY0-NEXT:    [[TMP3894:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3894]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5226]]
// SIMD-ONLY0:       if.end5226:
// SIMD-ONLY0-NEXT:    [[TMP3895:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3895]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3896:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3897:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5227:%.*]] = icmp eq i64 [[TMP3896]], [[TMP3897]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5227]], label [[IF_THEN5229:%.*]], label [[IF_ELSE5230:%.*]]
// SIMD-ONLY0:       if.then5229:
// SIMD-ONLY0-NEXT:    [[TMP3898:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3898]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5231:%.*]]
// SIMD-ONLY0:       if.else5230:
// SIMD-ONLY0-NEXT:    [[TMP3899:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3899]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5231]]
// SIMD-ONLY0:       if.end5231:
// SIMD-ONLY0-NEXT:    [[TMP3900:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3901:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5232:%.*]] = icmp eq i64 [[TMP3900]], [[TMP3901]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5232]], label [[IF_THEN5234:%.*]], label [[IF_ELSE5235:%.*]]
// SIMD-ONLY0:       if.then5234:
// SIMD-ONLY0-NEXT:    [[TMP3902:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3902]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5236:%.*]]
// SIMD-ONLY0:       if.else5235:
// SIMD-ONLY0-NEXT:    [[TMP3903:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3903]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5236]]
// SIMD-ONLY0:       if.end5236:
// SIMD-ONLY0-NEXT:    [[TMP3904:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3905:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5237:%.*]] = icmp eq i64 [[TMP3904]], [[TMP3905]]
// SIMD-ONLY0-NEXT:    [[CONV5238:%.*]] = zext i1 [[CMP5237]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5239:%.*]] = sext i32 [[CONV5238]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5239]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3906:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5240:%.*]] = icmp ne i64 [[TMP3906]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5240]], label [[IF_THEN5241:%.*]], label [[IF_END5242:%.*]]
// SIMD-ONLY0:       if.then5241:
// SIMD-ONLY0-NEXT:    [[TMP3907:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3907]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5242]]
// SIMD-ONLY0:       if.end5242:
// SIMD-ONLY0-NEXT:    [[TMP3908:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3909:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5243:%.*]] = icmp eq i64 [[TMP3908]], [[TMP3909]]
// SIMD-ONLY0-NEXT:    [[CONV5244:%.*]] = zext i1 [[CMP5243]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5245:%.*]] = sext i32 [[CONV5244]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5245]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3910:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5246:%.*]] = icmp ne i64 [[TMP3910]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5246]], label [[IF_THEN5247:%.*]], label [[IF_END5248:%.*]]
// SIMD-ONLY0:       if.then5247:
// SIMD-ONLY0-NEXT:    [[TMP3911:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3911]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5248]]
// SIMD-ONLY0:       if.end5248:
// SIMD-ONLY0-NEXT:    [[TMP3912:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3913:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5249:%.*]] = icmp eq i64 [[TMP3912]], [[TMP3913]]
// SIMD-ONLY0-NEXT:    [[CONV5250:%.*]] = zext i1 [[CMP5249]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5251:%.*]] = sext i32 [[CONV5250]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5251]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3914:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5252:%.*]] = icmp ne i64 [[TMP3914]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5252]], label [[IF_THEN5253:%.*]], label [[IF_ELSE5254:%.*]]
// SIMD-ONLY0:       if.then5253:
// SIMD-ONLY0-NEXT:    [[TMP3915:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3915]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5255:%.*]]
// SIMD-ONLY0:       if.else5254:
// SIMD-ONLY0-NEXT:    [[TMP3916:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3916]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5255]]
// SIMD-ONLY0:       if.end5255:
// SIMD-ONLY0-NEXT:    [[TMP3917:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3918:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5256:%.*]] = icmp eq i64 [[TMP3917]], [[TMP3918]]
// SIMD-ONLY0-NEXT:    [[CONV5257:%.*]] = zext i1 [[CMP5256]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5258:%.*]] = sext i32 [[CONV5257]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5258]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3919:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5259:%.*]] = icmp ne i64 [[TMP3919]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5259]], label [[IF_THEN5260:%.*]], label [[IF_ELSE5261:%.*]]
// SIMD-ONLY0:       if.then5260:
// SIMD-ONLY0-NEXT:    [[TMP3920:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3920]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5262:%.*]]
// SIMD-ONLY0:       if.else5261:
// SIMD-ONLY0-NEXT:    [[TMP3921:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3921]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5262]]
// SIMD-ONLY0:       if.end5262:
// SIMD-ONLY0-NEXT:    [[TMP3922:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3922]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3923:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3924:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5263:%.*]] = icmp sgt i64 [[TMP3923]], [[TMP3924]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5263]], label [[IF_THEN5265:%.*]], label [[IF_END5266:%.*]]
// SIMD-ONLY0:       if.then5265:
// SIMD-ONLY0-NEXT:    [[TMP3925:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3925]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5266]]
// SIMD-ONLY0:       if.end5266:
// SIMD-ONLY0-NEXT:    [[TMP3926:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3926]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3927:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3928:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5267:%.*]] = icmp sgt i64 [[TMP3927]], [[TMP3928]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5267]], label [[IF_THEN5269:%.*]], label [[IF_END5270:%.*]]
// SIMD-ONLY0:       if.then5269:
// SIMD-ONLY0-NEXT:    [[TMP3929:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3929]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5270]]
// SIMD-ONLY0:       if.end5270:
// SIMD-ONLY0-NEXT:    [[TMP3930:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3930]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3931:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3932:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5271:%.*]] = icmp slt i64 [[TMP3931]], [[TMP3932]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5271]], label [[IF_THEN5273:%.*]], label [[IF_END5274:%.*]]
// SIMD-ONLY0:       if.then5273:
// SIMD-ONLY0-NEXT:    [[TMP3933:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3933]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5274]]
// SIMD-ONLY0:       if.end5274:
// SIMD-ONLY0-NEXT:    [[TMP3934:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3934]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3935:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3936:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5275:%.*]] = icmp slt i64 [[TMP3935]], [[TMP3936]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5275]], label [[IF_THEN5277:%.*]], label [[IF_END5278:%.*]]
// SIMD-ONLY0:       if.then5277:
// SIMD-ONLY0-NEXT:    [[TMP3937:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3937]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5278]]
// SIMD-ONLY0:       if.end5278:
// SIMD-ONLY0-NEXT:    [[TMP3938:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3938]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3939:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3940:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5279:%.*]] = icmp eq i64 [[TMP3939]], [[TMP3940]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5279]], label [[IF_THEN5281:%.*]], label [[IF_END5282:%.*]]
// SIMD-ONLY0:       if.then5281:
// SIMD-ONLY0-NEXT:    [[TMP3941:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3941]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5282]]
// SIMD-ONLY0:       if.end5282:
// SIMD-ONLY0-NEXT:    [[TMP3942:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3942]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3943:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3944:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5283:%.*]] = icmp eq i64 [[TMP3943]], [[TMP3944]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5283]], label [[IF_THEN5285:%.*]], label [[IF_END5286:%.*]]
// SIMD-ONLY0:       if.then5285:
// SIMD-ONLY0-NEXT:    [[TMP3945:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3945]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5286]]
// SIMD-ONLY0:       if.end5286:
// SIMD-ONLY0-NEXT:    [[TMP3946:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3947:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5287:%.*]] = icmp sgt i64 [[TMP3946]], [[TMP3947]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5287]], label [[IF_THEN5289:%.*]], label [[IF_END5290:%.*]]
// SIMD-ONLY0:       if.then5289:
// SIMD-ONLY0-NEXT:    [[TMP3948:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3948]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5290]]
// SIMD-ONLY0:       if.end5290:
// SIMD-ONLY0-NEXT:    [[TMP3949:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3949]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3950:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3951:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5291:%.*]] = icmp sgt i64 [[TMP3950]], [[TMP3951]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5291]], label [[IF_THEN5293:%.*]], label [[IF_END5294:%.*]]
// SIMD-ONLY0:       if.then5293:
// SIMD-ONLY0-NEXT:    [[TMP3952:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3952]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5294]]
// SIMD-ONLY0:       if.end5294:
// SIMD-ONLY0-NEXT:    [[TMP3953:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3953]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3954:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3955:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5295:%.*]] = icmp slt i64 [[TMP3954]], [[TMP3955]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5295]], label [[IF_THEN5297:%.*]], label [[IF_END5298:%.*]]
// SIMD-ONLY0:       if.then5297:
// SIMD-ONLY0-NEXT:    [[TMP3956:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3956]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5298]]
// SIMD-ONLY0:       if.end5298:
// SIMD-ONLY0-NEXT:    [[TMP3957:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3957]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3958:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3959:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5299:%.*]] = icmp slt i64 [[TMP3958]], [[TMP3959]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5299]], label [[IF_THEN5301:%.*]], label [[IF_END5302:%.*]]
// SIMD-ONLY0:       if.then5301:
// SIMD-ONLY0-NEXT:    [[TMP3960:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3960]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5302]]
// SIMD-ONLY0:       if.end5302:
// SIMD-ONLY0-NEXT:    [[TMP3961:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3961]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3962:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3963:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5303:%.*]] = icmp eq i64 [[TMP3962]], [[TMP3963]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5303]], label [[IF_THEN5305:%.*]], label [[IF_END5306:%.*]]
// SIMD-ONLY0:       if.then5305:
// SIMD-ONLY0-NEXT:    [[TMP3964:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3964]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5306]]
// SIMD-ONLY0:       if.end5306:
// SIMD-ONLY0-NEXT:    [[TMP3965:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3965]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3966:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3967:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5307:%.*]] = icmp eq i64 [[TMP3966]], [[TMP3967]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5307]], label [[IF_THEN5309:%.*]], label [[IF_END5310:%.*]]
// SIMD-ONLY0:       if.then5309:
// SIMD-ONLY0-NEXT:    [[TMP3968:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3968]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5310]]
// SIMD-ONLY0:       if.end5310:
// SIMD-ONLY0-NEXT:    [[TMP3969:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3969]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3970:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3971:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5311:%.*]] = icmp eq i64 [[TMP3970]], [[TMP3971]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5311]], label [[IF_THEN5313:%.*]], label [[IF_ELSE5314:%.*]]
// SIMD-ONLY0:       if.then5313:
// SIMD-ONLY0-NEXT:    [[TMP3972:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3972]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5315:%.*]]
// SIMD-ONLY0:       if.else5314:
// SIMD-ONLY0-NEXT:    [[TMP3973:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3973]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5315]]
// SIMD-ONLY0:       if.end5315:
// SIMD-ONLY0-NEXT:    [[TMP3974:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3975:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5316:%.*]] = icmp eq i64 [[TMP3974]], [[TMP3975]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5316]], label [[IF_THEN5318:%.*]], label [[IF_ELSE5319:%.*]]
// SIMD-ONLY0:       if.then5318:
// SIMD-ONLY0-NEXT:    [[TMP3976:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3976]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5320:%.*]]
// SIMD-ONLY0:       if.else5319:
// SIMD-ONLY0-NEXT:    [[TMP3977:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3977]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5320]]
// SIMD-ONLY0:       if.end5320:
// SIMD-ONLY0-NEXT:    [[TMP3978:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3979:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5321:%.*]] = icmp eq i64 [[TMP3978]], [[TMP3979]]
// SIMD-ONLY0-NEXT:    [[CONV5322:%.*]] = zext i1 [[CMP5321]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5323:%.*]] = sext i32 [[CONV5322]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5323]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3980:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5324:%.*]] = icmp ne i64 [[TMP3980]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5324]], label [[IF_THEN5325:%.*]], label [[IF_END5326:%.*]]
// SIMD-ONLY0:       if.then5325:
// SIMD-ONLY0-NEXT:    [[TMP3981:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3981]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5326]]
// SIMD-ONLY0:       if.end5326:
// SIMD-ONLY0-NEXT:    [[TMP3982:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3983:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5327:%.*]] = icmp eq i64 [[TMP3982]], [[TMP3983]]
// SIMD-ONLY0-NEXT:    [[CONV5328:%.*]] = zext i1 [[CMP5327]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5329:%.*]] = sext i32 [[CONV5328]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5329]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3984:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5330:%.*]] = icmp ne i64 [[TMP3984]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5330]], label [[IF_THEN5331:%.*]], label [[IF_END5332:%.*]]
// SIMD-ONLY0:       if.then5331:
// SIMD-ONLY0-NEXT:    [[TMP3985:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3985]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5332]]
// SIMD-ONLY0:       if.end5332:
// SIMD-ONLY0-NEXT:    [[TMP3986:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3987:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5333:%.*]] = icmp eq i64 [[TMP3986]], [[TMP3987]]
// SIMD-ONLY0-NEXT:    [[CONV5334:%.*]] = zext i1 [[CMP5333]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5335:%.*]] = sext i32 [[CONV5334]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5335]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3988:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5336:%.*]] = icmp ne i64 [[TMP3988]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5336]], label [[IF_THEN5337:%.*]], label [[IF_ELSE5338:%.*]]
// SIMD-ONLY0:       if.then5337:
// SIMD-ONLY0-NEXT:    [[TMP3989:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3989]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5339:%.*]]
// SIMD-ONLY0:       if.else5338:
// SIMD-ONLY0-NEXT:    [[TMP3990:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3990]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5339]]
// SIMD-ONLY0:       if.end5339:
// SIMD-ONLY0-NEXT:    [[TMP3991:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3992:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5340:%.*]] = icmp eq i64 [[TMP3991]], [[TMP3992]]
// SIMD-ONLY0-NEXT:    [[CONV5341:%.*]] = zext i1 [[CMP5340]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5342:%.*]] = sext i32 [[CONV5341]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5342]], ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3993:%.*]] = load i64, ptr [[LLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5343:%.*]] = icmp ne i64 [[TMP3993]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5343]], label [[IF_THEN5344:%.*]], label [[IF_ELSE5345:%.*]]
// SIMD-ONLY0:       if.then5344:
// SIMD-ONLY0-NEXT:    [[TMP3994:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3994]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5346:%.*]]
// SIMD-ONLY0:       if.else5345:
// SIMD-ONLY0-NEXT:    [[TMP3995:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3995]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5346]]
// SIMD-ONLY0:       if.end5346:
// SIMD-ONLY0-NEXT:    [[TMP3996:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3996]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3997:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP3998:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5347:%.*]] = icmp ugt i64 [[TMP3997]], [[TMP3998]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5347]], label [[IF_THEN5349:%.*]], label [[IF_END5350:%.*]]
// SIMD-ONLY0:       if.then5349:
// SIMD-ONLY0-NEXT:    [[TMP3999:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP3999]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5350]]
// SIMD-ONLY0:       if.end5350:
// SIMD-ONLY0-NEXT:    [[TMP4000:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4000]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4001:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4002:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5351:%.*]] = icmp ugt i64 [[TMP4001]], [[TMP4002]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5351]], label [[IF_THEN5353:%.*]], label [[IF_END5354:%.*]]
// SIMD-ONLY0:       if.then5353:
// SIMD-ONLY0-NEXT:    [[TMP4003:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4003]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5354]]
// SIMD-ONLY0:       if.end5354:
// SIMD-ONLY0-NEXT:    [[TMP4004:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4004]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4005:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4006:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5355:%.*]] = icmp ult i64 [[TMP4005]], [[TMP4006]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5355]], label [[IF_THEN5357:%.*]], label [[IF_END5358:%.*]]
// SIMD-ONLY0:       if.then5357:
// SIMD-ONLY0-NEXT:    [[TMP4007:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4007]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5358]]
// SIMD-ONLY0:       if.end5358:
// SIMD-ONLY0-NEXT:    [[TMP4008:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4008]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4009:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4010:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5359:%.*]] = icmp ult i64 [[TMP4009]], [[TMP4010]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5359]], label [[IF_THEN5361:%.*]], label [[IF_END5362:%.*]]
// SIMD-ONLY0:       if.then5361:
// SIMD-ONLY0-NEXT:    [[TMP4011:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4011]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5362]]
// SIMD-ONLY0:       if.end5362:
// SIMD-ONLY0-NEXT:    [[TMP4012:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4012]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4013:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4014:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5363:%.*]] = icmp eq i64 [[TMP4013]], [[TMP4014]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5363]], label [[IF_THEN5365:%.*]], label [[IF_END5366:%.*]]
// SIMD-ONLY0:       if.then5365:
// SIMD-ONLY0-NEXT:    [[TMP4015:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4015]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5366]]
// SIMD-ONLY0:       if.end5366:
// SIMD-ONLY0-NEXT:    [[TMP4016:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4016]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4017:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4018:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5367:%.*]] = icmp eq i64 [[TMP4017]], [[TMP4018]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5367]], label [[IF_THEN5369:%.*]], label [[IF_END5370:%.*]]
// SIMD-ONLY0:       if.then5369:
// SIMD-ONLY0-NEXT:    [[TMP4019:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4019]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5370]]
// SIMD-ONLY0:       if.end5370:
// SIMD-ONLY0-NEXT:    [[TMP4020:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4021:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5371:%.*]] = icmp ugt i64 [[TMP4020]], [[TMP4021]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5371]], label [[IF_THEN5373:%.*]], label [[IF_END5374:%.*]]
// SIMD-ONLY0:       if.then5373:
// SIMD-ONLY0-NEXT:    [[TMP4022:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4022]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5374]]
// SIMD-ONLY0:       if.end5374:
// SIMD-ONLY0-NEXT:    [[TMP4023:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4023]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4024:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4025:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5375:%.*]] = icmp ugt i64 [[TMP4024]], [[TMP4025]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5375]], label [[IF_THEN5377:%.*]], label [[IF_END5378:%.*]]
// SIMD-ONLY0:       if.then5377:
// SIMD-ONLY0-NEXT:    [[TMP4026:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4026]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5378]]
// SIMD-ONLY0:       if.end5378:
// SIMD-ONLY0-NEXT:    [[TMP4027:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4027]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4028:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4029:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5379:%.*]] = icmp ult i64 [[TMP4028]], [[TMP4029]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5379]], label [[IF_THEN5381:%.*]], label [[IF_END5382:%.*]]
// SIMD-ONLY0:       if.then5381:
// SIMD-ONLY0-NEXT:    [[TMP4030:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4030]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5382]]
// SIMD-ONLY0:       if.end5382:
// SIMD-ONLY0-NEXT:    [[TMP4031:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4031]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4032:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4033:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5383:%.*]] = icmp ult i64 [[TMP4032]], [[TMP4033]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5383]], label [[IF_THEN5385:%.*]], label [[IF_END5386:%.*]]
// SIMD-ONLY0:       if.then5385:
// SIMD-ONLY0-NEXT:    [[TMP4034:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4034]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5386]]
// SIMD-ONLY0:       if.end5386:
// SIMD-ONLY0-NEXT:    [[TMP4035:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4035]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4036:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4037:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5387:%.*]] = icmp eq i64 [[TMP4036]], [[TMP4037]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5387]], label [[IF_THEN5389:%.*]], label [[IF_END5390:%.*]]
// SIMD-ONLY0:       if.then5389:
// SIMD-ONLY0-NEXT:    [[TMP4038:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4038]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5390]]
// SIMD-ONLY0:       if.end5390:
// SIMD-ONLY0-NEXT:    [[TMP4039:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4039]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4040:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4041:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5391:%.*]] = icmp eq i64 [[TMP4040]], [[TMP4041]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5391]], label [[IF_THEN5393:%.*]], label [[IF_END5394:%.*]]
// SIMD-ONLY0:       if.then5393:
// SIMD-ONLY0-NEXT:    [[TMP4042:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4042]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5394]]
// SIMD-ONLY0:       if.end5394:
// SIMD-ONLY0-NEXT:    [[TMP4043:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4043]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4044:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4045:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5395:%.*]] = icmp eq i64 [[TMP4044]], [[TMP4045]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5395]], label [[IF_THEN5397:%.*]], label [[IF_ELSE5398:%.*]]
// SIMD-ONLY0:       if.then5397:
// SIMD-ONLY0-NEXT:    [[TMP4046:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4046]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5399:%.*]]
// SIMD-ONLY0:       if.else5398:
// SIMD-ONLY0-NEXT:    [[TMP4047:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4047]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5399]]
// SIMD-ONLY0:       if.end5399:
// SIMD-ONLY0-NEXT:    [[TMP4048:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4049:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5400:%.*]] = icmp eq i64 [[TMP4048]], [[TMP4049]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5400]], label [[IF_THEN5402:%.*]], label [[IF_ELSE5403:%.*]]
// SIMD-ONLY0:       if.then5402:
// SIMD-ONLY0-NEXT:    [[TMP4050:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4050]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5404:%.*]]
// SIMD-ONLY0:       if.else5403:
// SIMD-ONLY0-NEXT:    [[TMP4051:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4051]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5404]]
// SIMD-ONLY0:       if.end5404:
// SIMD-ONLY0-NEXT:    [[TMP4052:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4053:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5405:%.*]] = icmp eq i64 [[TMP4052]], [[TMP4053]]
// SIMD-ONLY0-NEXT:    [[CONV5406:%.*]] = zext i1 [[CMP5405]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5407:%.*]] = sext i32 [[CONV5406]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5407]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4054:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5408:%.*]] = icmp ne i64 [[TMP4054]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5408]], label [[IF_THEN5409:%.*]], label [[IF_END5410:%.*]]
// SIMD-ONLY0:       if.then5409:
// SIMD-ONLY0-NEXT:    [[TMP4055:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4055]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5410]]
// SIMD-ONLY0:       if.end5410:
// SIMD-ONLY0-NEXT:    [[TMP4056:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4057:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5411:%.*]] = icmp eq i64 [[TMP4056]], [[TMP4057]]
// SIMD-ONLY0-NEXT:    [[CONV5412:%.*]] = zext i1 [[CMP5411]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5413:%.*]] = sext i32 [[CONV5412]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5413]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4058:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5414:%.*]] = icmp ne i64 [[TMP4058]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5414]], label [[IF_THEN5415:%.*]], label [[IF_END5416:%.*]]
// SIMD-ONLY0:       if.then5415:
// SIMD-ONLY0-NEXT:    [[TMP4059:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4059]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5416]]
// SIMD-ONLY0:       if.end5416:
// SIMD-ONLY0-NEXT:    [[TMP4060:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4061:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5417:%.*]] = icmp eq i64 [[TMP4060]], [[TMP4061]]
// SIMD-ONLY0-NEXT:    [[CONV5418:%.*]] = zext i1 [[CMP5417]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5419:%.*]] = sext i32 [[CONV5418]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5419]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4062:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5420:%.*]] = icmp ne i64 [[TMP4062]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5420]], label [[IF_THEN5421:%.*]], label [[IF_ELSE5422:%.*]]
// SIMD-ONLY0:       if.then5421:
// SIMD-ONLY0-NEXT:    [[TMP4063:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4063]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5423:%.*]]
// SIMD-ONLY0:       if.else5422:
// SIMD-ONLY0-NEXT:    [[TMP4064:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4064]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5423]]
// SIMD-ONLY0:       if.end5423:
// SIMD-ONLY0-NEXT:    [[TMP4065:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4066:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5424:%.*]] = icmp eq i64 [[TMP4065]], [[TMP4066]]
// SIMD-ONLY0-NEXT:    [[CONV5425:%.*]] = zext i1 [[CMP5424]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5426:%.*]] = sext i32 [[CONV5425]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5426]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4067:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5427:%.*]] = icmp ne i64 [[TMP4067]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5427]], label [[IF_THEN5428:%.*]], label [[IF_ELSE5429:%.*]]
// SIMD-ONLY0:       if.then5428:
// SIMD-ONLY0-NEXT:    [[TMP4068:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4068]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5430:%.*]]
// SIMD-ONLY0:       if.else5429:
// SIMD-ONLY0-NEXT:    [[TMP4069:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4069]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5430]]
// SIMD-ONLY0:       if.end5430:
// SIMD-ONLY0-NEXT:    [[TMP4070:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4070]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4071:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4072:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5431:%.*]] = icmp ugt i64 [[TMP4071]], [[TMP4072]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5431]], label [[IF_THEN5433:%.*]], label [[IF_END5434:%.*]]
// SIMD-ONLY0:       if.then5433:
// SIMD-ONLY0-NEXT:    [[TMP4073:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4073]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5434]]
// SIMD-ONLY0:       if.end5434:
// SIMD-ONLY0-NEXT:    [[TMP4074:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4074]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4075:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4076:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5435:%.*]] = icmp ugt i64 [[TMP4075]], [[TMP4076]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5435]], label [[IF_THEN5437:%.*]], label [[IF_END5438:%.*]]
// SIMD-ONLY0:       if.then5437:
// SIMD-ONLY0-NEXT:    [[TMP4077:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4077]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5438]]
// SIMD-ONLY0:       if.end5438:
// SIMD-ONLY0-NEXT:    [[TMP4078:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4078]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4079:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4080:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5439:%.*]] = icmp ult i64 [[TMP4079]], [[TMP4080]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5439]], label [[IF_THEN5441:%.*]], label [[IF_END5442:%.*]]
// SIMD-ONLY0:       if.then5441:
// SIMD-ONLY0-NEXT:    [[TMP4081:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4081]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5442]]
// SIMD-ONLY0:       if.end5442:
// SIMD-ONLY0-NEXT:    [[TMP4082:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4082]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4083:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4084:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5443:%.*]] = icmp ult i64 [[TMP4083]], [[TMP4084]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5443]], label [[IF_THEN5445:%.*]], label [[IF_END5446:%.*]]
// SIMD-ONLY0:       if.then5445:
// SIMD-ONLY0-NEXT:    [[TMP4085:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4085]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5446]]
// SIMD-ONLY0:       if.end5446:
// SIMD-ONLY0-NEXT:    [[TMP4086:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4086]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4087:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4088:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5447:%.*]] = icmp eq i64 [[TMP4087]], [[TMP4088]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5447]], label [[IF_THEN5449:%.*]], label [[IF_END5450:%.*]]
// SIMD-ONLY0:       if.then5449:
// SIMD-ONLY0-NEXT:    [[TMP4089:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4089]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5450]]
// SIMD-ONLY0:       if.end5450:
// SIMD-ONLY0-NEXT:    [[TMP4090:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4090]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4091:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4092:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5451:%.*]] = icmp eq i64 [[TMP4091]], [[TMP4092]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5451]], label [[IF_THEN5453:%.*]], label [[IF_END5454:%.*]]
// SIMD-ONLY0:       if.then5453:
// SIMD-ONLY0-NEXT:    [[TMP4093:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4093]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5454]]
// SIMD-ONLY0:       if.end5454:
// SIMD-ONLY0-NEXT:    [[TMP4094:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4095:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5455:%.*]] = icmp ugt i64 [[TMP4094]], [[TMP4095]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5455]], label [[IF_THEN5457:%.*]], label [[IF_END5458:%.*]]
// SIMD-ONLY0:       if.then5457:
// SIMD-ONLY0-NEXT:    [[TMP4096:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4096]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5458]]
// SIMD-ONLY0:       if.end5458:
// SIMD-ONLY0-NEXT:    [[TMP4097:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4097]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4098:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4099:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5459:%.*]] = icmp ugt i64 [[TMP4098]], [[TMP4099]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5459]], label [[IF_THEN5461:%.*]], label [[IF_END5462:%.*]]
// SIMD-ONLY0:       if.then5461:
// SIMD-ONLY0-NEXT:    [[TMP4100:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4100]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5462]]
// SIMD-ONLY0:       if.end5462:
// SIMD-ONLY0-NEXT:    [[TMP4101:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4101]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4102:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4103:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5463:%.*]] = icmp ult i64 [[TMP4102]], [[TMP4103]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5463]], label [[IF_THEN5465:%.*]], label [[IF_END5466:%.*]]
// SIMD-ONLY0:       if.then5465:
// SIMD-ONLY0-NEXT:    [[TMP4104:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4104]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5466]]
// SIMD-ONLY0:       if.end5466:
// SIMD-ONLY0-NEXT:    [[TMP4105:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4105]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4106:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4107:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5467:%.*]] = icmp ult i64 [[TMP4106]], [[TMP4107]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5467]], label [[IF_THEN5469:%.*]], label [[IF_END5470:%.*]]
// SIMD-ONLY0:       if.then5469:
// SIMD-ONLY0-NEXT:    [[TMP4108:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4108]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5470]]
// SIMD-ONLY0:       if.end5470:
// SIMD-ONLY0-NEXT:    [[TMP4109:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4109]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4110:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4111:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5471:%.*]] = icmp eq i64 [[TMP4110]], [[TMP4111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5471]], label [[IF_THEN5473:%.*]], label [[IF_END5474:%.*]]
// SIMD-ONLY0:       if.then5473:
// SIMD-ONLY0-NEXT:    [[TMP4112:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4112]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5474]]
// SIMD-ONLY0:       if.end5474:
// SIMD-ONLY0-NEXT:    [[TMP4113:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4113]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4114:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4115:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5475:%.*]] = icmp eq i64 [[TMP4114]], [[TMP4115]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5475]], label [[IF_THEN5477:%.*]], label [[IF_END5478:%.*]]
// SIMD-ONLY0:       if.then5477:
// SIMD-ONLY0-NEXT:    [[TMP4116:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4116]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5478]]
// SIMD-ONLY0:       if.end5478:
// SIMD-ONLY0-NEXT:    [[TMP4117:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4117]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4118:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4119:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5479:%.*]] = icmp eq i64 [[TMP4118]], [[TMP4119]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5479]], label [[IF_THEN5481:%.*]], label [[IF_ELSE5482:%.*]]
// SIMD-ONLY0:       if.then5481:
// SIMD-ONLY0-NEXT:    [[TMP4120:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4120]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5483:%.*]]
// SIMD-ONLY0:       if.else5482:
// SIMD-ONLY0-NEXT:    [[TMP4121:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4121]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5483]]
// SIMD-ONLY0:       if.end5483:
// SIMD-ONLY0-NEXT:    [[TMP4122:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4123:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5484:%.*]] = icmp eq i64 [[TMP4122]], [[TMP4123]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5484]], label [[IF_THEN5486:%.*]], label [[IF_ELSE5487:%.*]]
// SIMD-ONLY0:       if.then5486:
// SIMD-ONLY0-NEXT:    [[TMP4124:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4124]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5488:%.*]]
// SIMD-ONLY0:       if.else5487:
// SIMD-ONLY0-NEXT:    [[TMP4125:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4125]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5488]]
// SIMD-ONLY0:       if.end5488:
// SIMD-ONLY0-NEXT:    [[TMP4126:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4127:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5489:%.*]] = icmp eq i64 [[TMP4126]], [[TMP4127]]
// SIMD-ONLY0-NEXT:    [[CONV5490:%.*]] = zext i1 [[CMP5489]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5491:%.*]] = sext i32 [[CONV5490]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5491]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4128:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5492:%.*]] = icmp ne i64 [[TMP4128]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5492]], label [[IF_THEN5493:%.*]], label [[IF_END5494:%.*]]
// SIMD-ONLY0:       if.then5493:
// SIMD-ONLY0-NEXT:    [[TMP4129:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4129]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5494]]
// SIMD-ONLY0:       if.end5494:
// SIMD-ONLY0-NEXT:    [[TMP4130:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4131:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5495:%.*]] = icmp eq i64 [[TMP4130]], [[TMP4131]]
// SIMD-ONLY0-NEXT:    [[CONV5496:%.*]] = zext i1 [[CMP5495]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5497:%.*]] = sext i32 [[CONV5496]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5497]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4132:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5498:%.*]] = icmp ne i64 [[TMP4132]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5498]], label [[IF_THEN5499:%.*]], label [[IF_END5500:%.*]]
// SIMD-ONLY0:       if.then5499:
// SIMD-ONLY0-NEXT:    [[TMP4133:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4133]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5500]]
// SIMD-ONLY0:       if.end5500:
// SIMD-ONLY0-NEXT:    [[TMP4134:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4135:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5501:%.*]] = icmp eq i64 [[TMP4134]], [[TMP4135]]
// SIMD-ONLY0-NEXT:    [[CONV5502:%.*]] = zext i1 [[CMP5501]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5503:%.*]] = sext i32 [[CONV5502]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5503]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4136:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5504:%.*]] = icmp ne i64 [[TMP4136]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5504]], label [[IF_THEN5505:%.*]], label [[IF_ELSE5506:%.*]]
// SIMD-ONLY0:       if.then5505:
// SIMD-ONLY0-NEXT:    [[TMP4137:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4137]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5507:%.*]]
// SIMD-ONLY0:       if.else5506:
// SIMD-ONLY0-NEXT:    [[TMP4138:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4138]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5507]]
// SIMD-ONLY0:       if.end5507:
// SIMD-ONLY0-NEXT:    [[TMP4139:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4140:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5508:%.*]] = icmp eq i64 [[TMP4139]], [[TMP4140]]
// SIMD-ONLY0-NEXT:    [[CONV5509:%.*]] = zext i1 [[CMP5508]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5510:%.*]] = sext i32 [[CONV5509]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5510]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4141:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5511:%.*]] = icmp ne i64 [[TMP4141]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5511]], label [[IF_THEN5512:%.*]], label [[IF_ELSE5513:%.*]]
// SIMD-ONLY0:       if.then5512:
// SIMD-ONLY0-NEXT:    [[TMP4142:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4142]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5514:%.*]]
// SIMD-ONLY0:       if.else5513:
// SIMD-ONLY0-NEXT:    [[TMP4143:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4143]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5514]]
// SIMD-ONLY0:       if.end5514:
// SIMD-ONLY0-NEXT:    [[TMP4144:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4144]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4145:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4146:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5515:%.*]] = icmp ugt i64 [[TMP4145]], [[TMP4146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5515]], label [[IF_THEN5517:%.*]], label [[IF_END5518:%.*]]
// SIMD-ONLY0:       if.then5517:
// SIMD-ONLY0-NEXT:    [[TMP4147:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4147]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5518]]
// SIMD-ONLY0:       if.end5518:
// SIMD-ONLY0-NEXT:    [[TMP4148:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4148]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4149:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4150:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5519:%.*]] = icmp ugt i64 [[TMP4149]], [[TMP4150]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5519]], label [[IF_THEN5521:%.*]], label [[IF_END5522:%.*]]
// SIMD-ONLY0:       if.then5521:
// SIMD-ONLY0-NEXT:    [[TMP4151:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4151]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5522]]
// SIMD-ONLY0:       if.end5522:
// SIMD-ONLY0-NEXT:    [[TMP4152:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4152]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4153:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4154:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5523:%.*]] = icmp ult i64 [[TMP4153]], [[TMP4154]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5523]], label [[IF_THEN5525:%.*]], label [[IF_END5526:%.*]]
// SIMD-ONLY0:       if.then5525:
// SIMD-ONLY0-NEXT:    [[TMP4155:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4155]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5526]]
// SIMD-ONLY0:       if.end5526:
// SIMD-ONLY0-NEXT:    [[TMP4156:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4156]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4157:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4158:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5527:%.*]] = icmp ult i64 [[TMP4157]], [[TMP4158]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5527]], label [[IF_THEN5529:%.*]], label [[IF_END5530:%.*]]
// SIMD-ONLY0:       if.then5529:
// SIMD-ONLY0-NEXT:    [[TMP4159:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4159]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5530]]
// SIMD-ONLY0:       if.end5530:
// SIMD-ONLY0-NEXT:    [[TMP4160:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4160]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4161:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4162:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5531:%.*]] = icmp eq i64 [[TMP4161]], [[TMP4162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5531]], label [[IF_THEN5533:%.*]], label [[IF_END5534:%.*]]
// SIMD-ONLY0:       if.then5533:
// SIMD-ONLY0-NEXT:    [[TMP4163:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4163]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5534]]
// SIMD-ONLY0:       if.end5534:
// SIMD-ONLY0-NEXT:    [[TMP4164:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4164]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4165:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4166:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5535:%.*]] = icmp eq i64 [[TMP4165]], [[TMP4166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5535]], label [[IF_THEN5537:%.*]], label [[IF_END5538:%.*]]
// SIMD-ONLY0:       if.then5537:
// SIMD-ONLY0-NEXT:    [[TMP4167:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4167]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5538]]
// SIMD-ONLY0:       if.end5538:
// SIMD-ONLY0-NEXT:    [[TMP4168:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4169:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5539:%.*]] = icmp ugt i64 [[TMP4168]], [[TMP4169]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5539]], label [[IF_THEN5541:%.*]], label [[IF_END5542:%.*]]
// SIMD-ONLY0:       if.then5541:
// SIMD-ONLY0-NEXT:    [[TMP4170:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4170]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5542]]
// SIMD-ONLY0:       if.end5542:
// SIMD-ONLY0-NEXT:    [[TMP4171:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4171]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4172:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4173:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5543:%.*]] = icmp ugt i64 [[TMP4172]], [[TMP4173]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5543]], label [[IF_THEN5545:%.*]], label [[IF_END5546:%.*]]
// SIMD-ONLY0:       if.then5545:
// SIMD-ONLY0-NEXT:    [[TMP4174:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4174]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5546]]
// SIMD-ONLY0:       if.end5546:
// SIMD-ONLY0-NEXT:    [[TMP4175:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4175]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4176:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4177:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5547:%.*]] = icmp ult i64 [[TMP4176]], [[TMP4177]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5547]], label [[IF_THEN5549:%.*]], label [[IF_END5550:%.*]]
// SIMD-ONLY0:       if.then5549:
// SIMD-ONLY0-NEXT:    [[TMP4178:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4178]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5550]]
// SIMD-ONLY0:       if.end5550:
// SIMD-ONLY0-NEXT:    [[TMP4179:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4179]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4180:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4181:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5551:%.*]] = icmp ult i64 [[TMP4180]], [[TMP4181]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5551]], label [[IF_THEN5553:%.*]], label [[IF_END5554:%.*]]
// SIMD-ONLY0:       if.then5553:
// SIMD-ONLY0-NEXT:    [[TMP4182:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4182]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5554]]
// SIMD-ONLY0:       if.end5554:
// SIMD-ONLY0-NEXT:    [[TMP4183:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4183]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4184:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4185:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5555:%.*]] = icmp eq i64 [[TMP4184]], [[TMP4185]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5555]], label [[IF_THEN5557:%.*]], label [[IF_END5558:%.*]]
// SIMD-ONLY0:       if.then5557:
// SIMD-ONLY0-NEXT:    [[TMP4186:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4186]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5558]]
// SIMD-ONLY0:       if.end5558:
// SIMD-ONLY0-NEXT:    [[TMP4187:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4187]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4188:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4189:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5559:%.*]] = icmp eq i64 [[TMP4188]], [[TMP4189]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5559]], label [[IF_THEN5561:%.*]], label [[IF_END5562:%.*]]
// SIMD-ONLY0:       if.then5561:
// SIMD-ONLY0-NEXT:    [[TMP4190:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4190]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5562]]
// SIMD-ONLY0:       if.end5562:
// SIMD-ONLY0-NEXT:    [[TMP4191:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4191]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4192:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4193:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5563:%.*]] = icmp eq i64 [[TMP4192]], [[TMP4193]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5563]], label [[IF_THEN5565:%.*]], label [[IF_ELSE5566:%.*]]
// SIMD-ONLY0:       if.then5565:
// SIMD-ONLY0-NEXT:    [[TMP4194:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4194]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5567:%.*]]
// SIMD-ONLY0:       if.else5566:
// SIMD-ONLY0-NEXT:    [[TMP4195:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4195]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5567]]
// SIMD-ONLY0:       if.end5567:
// SIMD-ONLY0-NEXT:    [[TMP4196:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4197:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5568:%.*]] = icmp eq i64 [[TMP4196]], [[TMP4197]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5568]], label [[IF_THEN5570:%.*]], label [[IF_ELSE5571:%.*]]
// SIMD-ONLY0:       if.then5570:
// SIMD-ONLY0-NEXT:    [[TMP4198:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4198]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5572:%.*]]
// SIMD-ONLY0:       if.else5571:
// SIMD-ONLY0-NEXT:    [[TMP4199:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4199]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5572]]
// SIMD-ONLY0:       if.end5572:
// SIMD-ONLY0-NEXT:    [[TMP4200:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4201:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5573:%.*]] = icmp eq i64 [[TMP4200]], [[TMP4201]]
// SIMD-ONLY0-NEXT:    [[CONV5574:%.*]] = zext i1 [[CMP5573]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5575:%.*]] = sext i32 [[CONV5574]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5575]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4202:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5576:%.*]] = icmp ne i64 [[TMP4202]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5576]], label [[IF_THEN5577:%.*]], label [[IF_END5578:%.*]]
// SIMD-ONLY0:       if.then5577:
// SIMD-ONLY0-NEXT:    [[TMP4203:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4203]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5578]]
// SIMD-ONLY0:       if.end5578:
// SIMD-ONLY0-NEXT:    [[TMP4204:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4205:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5579:%.*]] = icmp eq i64 [[TMP4204]], [[TMP4205]]
// SIMD-ONLY0-NEXT:    [[CONV5580:%.*]] = zext i1 [[CMP5579]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5581:%.*]] = sext i32 [[CONV5580]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5581]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4206:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5582:%.*]] = icmp ne i64 [[TMP4206]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5582]], label [[IF_THEN5583:%.*]], label [[IF_END5584:%.*]]
// SIMD-ONLY0:       if.then5583:
// SIMD-ONLY0-NEXT:    [[TMP4207:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4207]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5584]]
// SIMD-ONLY0:       if.end5584:
// SIMD-ONLY0-NEXT:    [[TMP4208:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4209:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5585:%.*]] = icmp eq i64 [[TMP4208]], [[TMP4209]]
// SIMD-ONLY0-NEXT:    [[CONV5586:%.*]] = zext i1 [[CMP5585]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5587:%.*]] = sext i32 [[CONV5586]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5587]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4210:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5588:%.*]] = icmp ne i64 [[TMP4210]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5588]], label [[IF_THEN5589:%.*]], label [[IF_ELSE5590:%.*]]
// SIMD-ONLY0:       if.then5589:
// SIMD-ONLY0-NEXT:    [[TMP4211:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4211]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5591:%.*]]
// SIMD-ONLY0:       if.else5590:
// SIMD-ONLY0-NEXT:    [[TMP4212:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4212]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5591]]
// SIMD-ONLY0:       if.end5591:
// SIMD-ONLY0-NEXT:    [[TMP4213:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4214:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5592:%.*]] = icmp eq i64 [[TMP4213]], [[TMP4214]]
// SIMD-ONLY0-NEXT:    [[CONV5593:%.*]] = zext i1 [[CMP5592]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5594:%.*]] = sext i32 [[CONV5593]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5594]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4215:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5595:%.*]] = icmp ne i64 [[TMP4215]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5595]], label [[IF_THEN5596:%.*]], label [[IF_ELSE5597:%.*]]
// SIMD-ONLY0:       if.then5596:
// SIMD-ONLY0-NEXT:    [[TMP4216:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4216]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5598:%.*]]
// SIMD-ONLY0:       if.else5597:
// SIMD-ONLY0-NEXT:    [[TMP4217:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4217]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5598]]
// SIMD-ONLY0:       if.end5598:
// SIMD-ONLY0-NEXT:    [[TMP4218:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4218]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4219:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4220:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5599:%.*]] = icmp ugt i64 [[TMP4219]], [[TMP4220]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5599]], label [[IF_THEN5601:%.*]], label [[IF_END5602:%.*]]
// SIMD-ONLY0:       if.then5601:
// SIMD-ONLY0-NEXT:    [[TMP4221:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4221]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5602]]
// SIMD-ONLY0:       if.end5602:
// SIMD-ONLY0-NEXT:    [[TMP4222:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4222]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4223:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4224:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5603:%.*]] = icmp ugt i64 [[TMP4223]], [[TMP4224]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5603]], label [[IF_THEN5605:%.*]], label [[IF_END5606:%.*]]
// SIMD-ONLY0:       if.then5605:
// SIMD-ONLY0-NEXT:    [[TMP4225:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4225]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5606]]
// SIMD-ONLY0:       if.end5606:
// SIMD-ONLY0-NEXT:    [[TMP4226:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4226]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4227:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4228:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5607:%.*]] = icmp ult i64 [[TMP4227]], [[TMP4228]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5607]], label [[IF_THEN5609:%.*]], label [[IF_END5610:%.*]]
// SIMD-ONLY0:       if.then5609:
// SIMD-ONLY0-NEXT:    [[TMP4229:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4229]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5610]]
// SIMD-ONLY0:       if.end5610:
// SIMD-ONLY0-NEXT:    [[TMP4230:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4230]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4231:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4232:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5611:%.*]] = icmp ult i64 [[TMP4231]], [[TMP4232]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5611]], label [[IF_THEN5613:%.*]], label [[IF_END5614:%.*]]
// SIMD-ONLY0:       if.then5613:
// SIMD-ONLY0-NEXT:    [[TMP4233:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4233]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5614]]
// SIMD-ONLY0:       if.end5614:
// SIMD-ONLY0-NEXT:    [[TMP4234:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4234]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4235:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4236:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5615:%.*]] = icmp eq i64 [[TMP4235]], [[TMP4236]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5615]], label [[IF_THEN5617:%.*]], label [[IF_END5618:%.*]]
// SIMD-ONLY0:       if.then5617:
// SIMD-ONLY0-NEXT:    [[TMP4237:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4237]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5618]]
// SIMD-ONLY0:       if.end5618:
// SIMD-ONLY0-NEXT:    [[TMP4238:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4238]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4239:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4240:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5619:%.*]] = icmp eq i64 [[TMP4239]], [[TMP4240]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5619]], label [[IF_THEN5621:%.*]], label [[IF_END5622:%.*]]
// SIMD-ONLY0:       if.then5621:
// SIMD-ONLY0-NEXT:    [[TMP4241:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4241]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5622]]
// SIMD-ONLY0:       if.end5622:
// SIMD-ONLY0-NEXT:    [[TMP4242:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4243:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5623:%.*]] = icmp ugt i64 [[TMP4242]], [[TMP4243]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5623]], label [[IF_THEN5625:%.*]], label [[IF_END5626:%.*]]
// SIMD-ONLY0:       if.then5625:
// SIMD-ONLY0-NEXT:    [[TMP4244:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4244]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5626]]
// SIMD-ONLY0:       if.end5626:
// SIMD-ONLY0-NEXT:    [[TMP4245:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4245]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4246:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4247:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5627:%.*]] = icmp ugt i64 [[TMP4246]], [[TMP4247]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5627]], label [[IF_THEN5629:%.*]], label [[IF_END5630:%.*]]
// SIMD-ONLY0:       if.then5629:
// SIMD-ONLY0-NEXT:    [[TMP4248:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4248]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5630]]
// SIMD-ONLY0:       if.end5630:
// SIMD-ONLY0-NEXT:    [[TMP4249:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4249]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4250:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4251:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5631:%.*]] = icmp ult i64 [[TMP4250]], [[TMP4251]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5631]], label [[IF_THEN5633:%.*]], label [[IF_END5634:%.*]]
// SIMD-ONLY0:       if.then5633:
// SIMD-ONLY0-NEXT:    [[TMP4252:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4252]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5634]]
// SIMD-ONLY0:       if.end5634:
// SIMD-ONLY0-NEXT:    [[TMP4253:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4253]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4254:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4255:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5635:%.*]] = icmp ult i64 [[TMP4254]], [[TMP4255]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5635]], label [[IF_THEN5637:%.*]], label [[IF_END5638:%.*]]
// SIMD-ONLY0:       if.then5637:
// SIMD-ONLY0-NEXT:    [[TMP4256:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4256]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5638]]
// SIMD-ONLY0:       if.end5638:
// SIMD-ONLY0-NEXT:    [[TMP4257:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4257]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4258:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4259:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5639:%.*]] = icmp eq i64 [[TMP4258]], [[TMP4259]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5639]], label [[IF_THEN5641:%.*]], label [[IF_END5642:%.*]]
// SIMD-ONLY0:       if.then5641:
// SIMD-ONLY0-NEXT:    [[TMP4260:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4260]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5642]]
// SIMD-ONLY0:       if.end5642:
// SIMD-ONLY0-NEXT:    [[TMP4261:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4261]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4262:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4263:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5643:%.*]] = icmp eq i64 [[TMP4262]], [[TMP4263]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5643]], label [[IF_THEN5645:%.*]], label [[IF_END5646:%.*]]
// SIMD-ONLY0:       if.then5645:
// SIMD-ONLY0-NEXT:    [[TMP4264:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4264]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5646]]
// SIMD-ONLY0:       if.end5646:
// SIMD-ONLY0-NEXT:    [[TMP4265:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4265]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4266:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4267:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5647:%.*]] = icmp eq i64 [[TMP4266]], [[TMP4267]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5647]], label [[IF_THEN5649:%.*]], label [[IF_ELSE5650:%.*]]
// SIMD-ONLY0:       if.then5649:
// SIMD-ONLY0-NEXT:    [[TMP4268:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4268]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5651:%.*]]
// SIMD-ONLY0:       if.else5650:
// SIMD-ONLY0-NEXT:    [[TMP4269:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4269]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5651]]
// SIMD-ONLY0:       if.end5651:
// SIMD-ONLY0-NEXT:    [[TMP4270:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4271:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5652:%.*]] = icmp eq i64 [[TMP4270]], [[TMP4271]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5652]], label [[IF_THEN5654:%.*]], label [[IF_ELSE5655:%.*]]
// SIMD-ONLY0:       if.then5654:
// SIMD-ONLY0-NEXT:    [[TMP4272:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4272]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5656:%.*]]
// SIMD-ONLY0:       if.else5655:
// SIMD-ONLY0-NEXT:    [[TMP4273:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4273]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5656]]
// SIMD-ONLY0:       if.end5656:
// SIMD-ONLY0-NEXT:    [[TMP4274:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4275:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5657:%.*]] = icmp eq i64 [[TMP4274]], [[TMP4275]]
// SIMD-ONLY0-NEXT:    [[CONV5658:%.*]] = zext i1 [[CMP5657]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5659:%.*]] = sext i32 [[CONV5658]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5659]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4276:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5660:%.*]] = icmp ne i64 [[TMP4276]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5660]], label [[IF_THEN5661:%.*]], label [[IF_END5662:%.*]]
// SIMD-ONLY0:       if.then5661:
// SIMD-ONLY0-NEXT:    [[TMP4277:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4277]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5662]]
// SIMD-ONLY0:       if.end5662:
// SIMD-ONLY0-NEXT:    [[TMP4278:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4279:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5663:%.*]] = icmp eq i64 [[TMP4278]], [[TMP4279]]
// SIMD-ONLY0-NEXT:    [[CONV5664:%.*]] = zext i1 [[CMP5663]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5665:%.*]] = sext i32 [[CONV5664]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5665]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4280:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5666:%.*]] = icmp ne i64 [[TMP4280]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5666]], label [[IF_THEN5667:%.*]], label [[IF_END5668:%.*]]
// SIMD-ONLY0:       if.then5667:
// SIMD-ONLY0-NEXT:    [[TMP4281:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4281]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5668]]
// SIMD-ONLY0:       if.end5668:
// SIMD-ONLY0-NEXT:    [[TMP4282:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4283:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5669:%.*]] = icmp eq i64 [[TMP4282]], [[TMP4283]]
// SIMD-ONLY0-NEXT:    [[CONV5670:%.*]] = zext i1 [[CMP5669]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5671:%.*]] = sext i32 [[CONV5670]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5671]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4284:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5672:%.*]] = icmp ne i64 [[TMP4284]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5672]], label [[IF_THEN5673:%.*]], label [[IF_ELSE5674:%.*]]
// SIMD-ONLY0:       if.then5673:
// SIMD-ONLY0-NEXT:    [[TMP4285:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4285]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5675:%.*]]
// SIMD-ONLY0:       if.else5674:
// SIMD-ONLY0-NEXT:    [[TMP4286:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4286]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5675]]
// SIMD-ONLY0:       if.end5675:
// SIMD-ONLY0-NEXT:    [[TMP4287:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4288:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5676:%.*]] = icmp eq i64 [[TMP4287]], [[TMP4288]]
// SIMD-ONLY0-NEXT:    [[CONV5677:%.*]] = zext i1 [[CMP5676]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5678:%.*]] = sext i32 [[CONV5677]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5678]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4289:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5679:%.*]] = icmp ne i64 [[TMP4289]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5679]], label [[IF_THEN5680:%.*]], label [[IF_ELSE5681:%.*]]
// SIMD-ONLY0:       if.then5680:
// SIMD-ONLY0-NEXT:    [[TMP4290:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4290]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5682:%.*]]
// SIMD-ONLY0:       if.else5681:
// SIMD-ONLY0-NEXT:    [[TMP4291:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4291]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5682]]
// SIMD-ONLY0:       if.end5682:
// SIMD-ONLY0-NEXT:    [[TMP4292:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4292]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4293:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4294:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5683:%.*]] = icmp ugt i64 [[TMP4293]], [[TMP4294]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5683]], label [[IF_THEN5685:%.*]], label [[IF_END5686:%.*]]
// SIMD-ONLY0:       if.then5685:
// SIMD-ONLY0-NEXT:    [[TMP4295:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4295]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5686]]
// SIMD-ONLY0:       if.end5686:
// SIMD-ONLY0-NEXT:    [[TMP4296:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4296]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4297:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4298:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5687:%.*]] = icmp ugt i64 [[TMP4297]], [[TMP4298]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5687]], label [[IF_THEN5689:%.*]], label [[IF_END5690:%.*]]
// SIMD-ONLY0:       if.then5689:
// SIMD-ONLY0-NEXT:    [[TMP4299:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4299]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5690]]
// SIMD-ONLY0:       if.end5690:
// SIMD-ONLY0-NEXT:    [[TMP4300:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4300]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4301:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4302:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5691:%.*]] = icmp ult i64 [[TMP4301]], [[TMP4302]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5691]], label [[IF_THEN5693:%.*]], label [[IF_END5694:%.*]]
// SIMD-ONLY0:       if.then5693:
// SIMD-ONLY0-NEXT:    [[TMP4303:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4303]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5694]]
// SIMD-ONLY0:       if.end5694:
// SIMD-ONLY0-NEXT:    [[TMP4304:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4304]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4305:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4306:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5695:%.*]] = icmp ult i64 [[TMP4305]], [[TMP4306]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5695]], label [[IF_THEN5697:%.*]], label [[IF_END5698:%.*]]
// SIMD-ONLY0:       if.then5697:
// SIMD-ONLY0-NEXT:    [[TMP4307:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4307]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5698]]
// SIMD-ONLY0:       if.end5698:
// SIMD-ONLY0-NEXT:    [[TMP4308:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4308]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4309:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4310:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5699:%.*]] = icmp eq i64 [[TMP4309]], [[TMP4310]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5699]], label [[IF_THEN5701:%.*]], label [[IF_END5702:%.*]]
// SIMD-ONLY0:       if.then5701:
// SIMD-ONLY0-NEXT:    [[TMP4311:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4311]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5702]]
// SIMD-ONLY0:       if.end5702:
// SIMD-ONLY0-NEXT:    [[TMP4312:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4312]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4313:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4314:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5703:%.*]] = icmp eq i64 [[TMP4313]], [[TMP4314]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5703]], label [[IF_THEN5705:%.*]], label [[IF_END5706:%.*]]
// SIMD-ONLY0:       if.then5705:
// SIMD-ONLY0-NEXT:    [[TMP4315:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4315]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5706]]
// SIMD-ONLY0:       if.end5706:
// SIMD-ONLY0-NEXT:    [[TMP4316:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4317:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5707:%.*]] = icmp ugt i64 [[TMP4316]], [[TMP4317]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5707]], label [[IF_THEN5709:%.*]], label [[IF_END5710:%.*]]
// SIMD-ONLY0:       if.then5709:
// SIMD-ONLY0-NEXT:    [[TMP4318:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4318]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5710]]
// SIMD-ONLY0:       if.end5710:
// SIMD-ONLY0-NEXT:    [[TMP4319:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4319]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4320:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4321:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5711:%.*]] = icmp ugt i64 [[TMP4320]], [[TMP4321]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5711]], label [[IF_THEN5713:%.*]], label [[IF_END5714:%.*]]
// SIMD-ONLY0:       if.then5713:
// SIMD-ONLY0-NEXT:    [[TMP4322:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4322]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5714]]
// SIMD-ONLY0:       if.end5714:
// SIMD-ONLY0-NEXT:    [[TMP4323:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4323]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4324:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4325:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5715:%.*]] = icmp ult i64 [[TMP4324]], [[TMP4325]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5715]], label [[IF_THEN5717:%.*]], label [[IF_END5718:%.*]]
// SIMD-ONLY0:       if.then5717:
// SIMD-ONLY0-NEXT:    [[TMP4326:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4326]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5718]]
// SIMD-ONLY0:       if.end5718:
// SIMD-ONLY0-NEXT:    [[TMP4327:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4327]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4328:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4329:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5719:%.*]] = icmp ult i64 [[TMP4328]], [[TMP4329]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5719]], label [[IF_THEN5721:%.*]], label [[IF_END5722:%.*]]
// SIMD-ONLY0:       if.then5721:
// SIMD-ONLY0-NEXT:    [[TMP4330:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4330]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5722]]
// SIMD-ONLY0:       if.end5722:
// SIMD-ONLY0-NEXT:    [[TMP4331:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4331]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4332:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4333:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5723:%.*]] = icmp eq i64 [[TMP4332]], [[TMP4333]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5723]], label [[IF_THEN5725:%.*]], label [[IF_END5726:%.*]]
// SIMD-ONLY0:       if.then5725:
// SIMD-ONLY0-NEXT:    [[TMP4334:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4334]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5726]]
// SIMD-ONLY0:       if.end5726:
// SIMD-ONLY0-NEXT:    [[TMP4335:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4335]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4336:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4337:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5727:%.*]] = icmp eq i64 [[TMP4336]], [[TMP4337]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5727]], label [[IF_THEN5729:%.*]], label [[IF_END5730:%.*]]
// SIMD-ONLY0:       if.then5729:
// SIMD-ONLY0-NEXT:    [[TMP4338:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4338]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5730]]
// SIMD-ONLY0:       if.end5730:
// SIMD-ONLY0-NEXT:    [[TMP4339:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4339]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4340:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4341:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5731:%.*]] = icmp eq i64 [[TMP4340]], [[TMP4341]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5731]], label [[IF_THEN5733:%.*]], label [[IF_ELSE5734:%.*]]
// SIMD-ONLY0:       if.then5733:
// SIMD-ONLY0-NEXT:    [[TMP4342:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4342]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5735:%.*]]
// SIMD-ONLY0:       if.else5734:
// SIMD-ONLY0-NEXT:    [[TMP4343:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4343]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5735]]
// SIMD-ONLY0:       if.end5735:
// SIMD-ONLY0-NEXT:    [[TMP4344:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4345:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5736:%.*]] = icmp eq i64 [[TMP4344]], [[TMP4345]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5736]], label [[IF_THEN5738:%.*]], label [[IF_ELSE5739:%.*]]
// SIMD-ONLY0:       if.then5738:
// SIMD-ONLY0-NEXT:    [[TMP4346:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4346]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5740:%.*]]
// SIMD-ONLY0:       if.else5739:
// SIMD-ONLY0-NEXT:    [[TMP4347:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4347]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5740]]
// SIMD-ONLY0:       if.end5740:
// SIMD-ONLY0-NEXT:    [[TMP4348:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4349:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5741:%.*]] = icmp eq i64 [[TMP4348]], [[TMP4349]]
// SIMD-ONLY0-NEXT:    [[CONV5742:%.*]] = zext i1 [[CMP5741]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5743:%.*]] = sext i32 [[CONV5742]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5743]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4350:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5744:%.*]] = icmp ne i64 [[TMP4350]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5744]], label [[IF_THEN5745:%.*]], label [[IF_END5746:%.*]]
// SIMD-ONLY0:       if.then5745:
// SIMD-ONLY0-NEXT:    [[TMP4351:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4351]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5746]]
// SIMD-ONLY0:       if.end5746:
// SIMD-ONLY0-NEXT:    [[TMP4352:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4353:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5747:%.*]] = icmp eq i64 [[TMP4352]], [[TMP4353]]
// SIMD-ONLY0-NEXT:    [[CONV5748:%.*]] = zext i1 [[CMP5747]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5749:%.*]] = sext i32 [[CONV5748]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5749]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4354:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5750:%.*]] = icmp ne i64 [[TMP4354]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5750]], label [[IF_THEN5751:%.*]], label [[IF_END5752:%.*]]
// SIMD-ONLY0:       if.then5751:
// SIMD-ONLY0-NEXT:    [[TMP4355:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4355]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5752]]
// SIMD-ONLY0:       if.end5752:
// SIMD-ONLY0-NEXT:    [[TMP4356:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4357:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5753:%.*]] = icmp eq i64 [[TMP4356]], [[TMP4357]]
// SIMD-ONLY0-NEXT:    [[CONV5754:%.*]] = zext i1 [[CMP5753]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5755:%.*]] = sext i32 [[CONV5754]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5755]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4358:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5756:%.*]] = icmp ne i64 [[TMP4358]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5756]], label [[IF_THEN5757:%.*]], label [[IF_ELSE5758:%.*]]
// SIMD-ONLY0:       if.then5757:
// SIMD-ONLY0-NEXT:    [[TMP4359:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4359]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5759:%.*]]
// SIMD-ONLY0:       if.else5758:
// SIMD-ONLY0-NEXT:    [[TMP4360:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4360]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5759]]
// SIMD-ONLY0:       if.end5759:
// SIMD-ONLY0-NEXT:    [[TMP4361:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4362:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5760:%.*]] = icmp eq i64 [[TMP4361]], [[TMP4362]]
// SIMD-ONLY0-NEXT:    [[CONV5761:%.*]] = zext i1 [[CMP5760]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5762:%.*]] = sext i32 [[CONV5761]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5762]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4363:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5763:%.*]] = icmp ne i64 [[TMP4363]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5763]], label [[IF_THEN5764:%.*]], label [[IF_ELSE5765:%.*]]
// SIMD-ONLY0:       if.then5764:
// SIMD-ONLY0-NEXT:    [[TMP4364:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4364]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5766:%.*]]
// SIMD-ONLY0:       if.else5765:
// SIMD-ONLY0-NEXT:    [[TMP4365:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4365]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5766]]
// SIMD-ONLY0:       if.end5766:
// SIMD-ONLY0-NEXT:    [[TMP4366:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4366]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4367:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4368:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5767:%.*]] = icmp ugt i64 [[TMP4367]], [[TMP4368]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5767]], label [[IF_THEN5769:%.*]], label [[IF_END5770:%.*]]
// SIMD-ONLY0:       if.then5769:
// SIMD-ONLY0-NEXT:    [[TMP4369:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4369]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5770]]
// SIMD-ONLY0:       if.end5770:
// SIMD-ONLY0-NEXT:    [[TMP4370:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4370]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4371:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4372:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5771:%.*]] = icmp ugt i64 [[TMP4371]], [[TMP4372]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5771]], label [[IF_THEN5773:%.*]], label [[IF_END5774:%.*]]
// SIMD-ONLY0:       if.then5773:
// SIMD-ONLY0-NEXT:    [[TMP4373:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4373]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5774]]
// SIMD-ONLY0:       if.end5774:
// SIMD-ONLY0-NEXT:    [[TMP4374:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4374]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4375:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4376:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5775:%.*]] = icmp ult i64 [[TMP4375]], [[TMP4376]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5775]], label [[IF_THEN5777:%.*]], label [[IF_END5778:%.*]]
// SIMD-ONLY0:       if.then5777:
// SIMD-ONLY0-NEXT:    [[TMP4377:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4377]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5778]]
// SIMD-ONLY0:       if.end5778:
// SIMD-ONLY0-NEXT:    [[TMP4378:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4378]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4379:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4380:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5779:%.*]] = icmp ult i64 [[TMP4379]], [[TMP4380]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5779]], label [[IF_THEN5781:%.*]], label [[IF_END5782:%.*]]
// SIMD-ONLY0:       if.then5781:
// SIMD-ONLY0-NEXT:    [[TMP4381:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4381]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5782]]
// SIMD-ONLY0:       if.end5782:
// SIMD-ONLY0-NEXT:    [[TMP4382:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4382]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4383:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4384:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5783:%.*]] = icmp eq i64 [[TMP4383]], [[TMP4384]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5783]], label [[IF_THEN5785:%.*]], label [[IF_END5786:%.*]]
// SIMD-ONLY0:       if.then5785:
// SIMD-ONLY0-NEXT:    [[TMP4385:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4385]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5786]]
// SIMD-ONLY0:       if.end5786:
// SIMD-ONLY0-NEXT:    [[TMP4386:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4386]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4387:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4388:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5787:%.*]] = icmp eq i64 [[TMP4387]], [[TMP4388]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5787]], label [[IF_THEN5789:%.*]], label [[IF_END5790:%.*]]
// SIMD-ONLY0:       if.then5789:
// SIMD-ONLY0-NEXT:    [[TMP4389:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4389]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5790]]
// SIMD-ONLY0:       if.end5790:
// SIMD-ONLY0-NEXT:    [[TMP4390:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4391:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5791:%.*]] = icmp ugt i64 [[TMP4390]], [[TMP4391]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5791]], label [[IF_THEN5793:%.*]], label [[IF_END5794:%.*]]
// SIMD-ONLY0:       if.then5793:
// SIMD-ONLY0-NEXT:    [[TMP4392:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4392]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5794]]
// SIMD-ONLY0:       if.end5794:
// SIMD-ONLY0-NEXT:    [[TMP4393:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4393]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4394:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4395:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5795:%.*]] = icmp ugt i64 [[TMP4394]], [[TMP4395]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5795]], label [[IF_THEN5797:%.*]], label [[IF_END5798:%.*]]
// SIMD-ONLY0:       if.then5797:
// SIMD-ONLY0-NEXT:    [[TMP4396:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4396]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5798]]
// SIMD-ONLY0:       if.end5798:
// SIMD-ONLY0-NEXT:    [[TMP4397:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4397]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4398:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4399:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5799:%.*]] = icmp ult i64 [[TMP4398]], [[TMP4399]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5799]], label [[IF_THEN5801:%.*]], label [[IF_END5802:%.*]]
// SIMD-ONLY0:       if.then5801:
// SIMD-ONLY0-NEXT:    [[TMP4400:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4400]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5802]]
// SIMD-ONLY0:       if.end5802:
// SIMD-ONLY0-NEXT:    [[TMP4401:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4401]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4402:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4403:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5803:%.*]] = icmp ult i64 [[TMP4402]], [[TMP4403]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5803]], label [[IF_THEN5805:%.*]], label [[IF_END5806:%.*]]
// SIMD-ONLY0:       if.then5805:
// SIMD-ONLY0-NEXT:    [[TMP4404:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4404]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5806]]
// SIMD-ONLY0:       if.end5806:
// SIMD-ONLY0-NEXT:    [[TMP4405:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4405]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4406:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4407:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5807:%.*]] = icmp eq i64 [[TMP4406]], [[TMP4407]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5807]], label [[IF_THEN5809:%.*]], label [[IF_END5810:%.*]]
// SIMD-ONLY0:       if.then5809:
// SIMD-ONLY0-NEXT:    [[TMP4408:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4408]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5810]]
// SIMD-ONLY0:       if.end5810:
// SIMD-ONLY0-NEXT:    [[TMP4409:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4409]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4410:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4411:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5811:%.*]] = icmp eq i64 [[TMP4410]], [[TMP4411]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5811]], label [[IF_THEN5813:%.*]], label [[IF_END5814:%.*]]
// SIMD-ONLY0:       if.then5813:
// SIMD-ONLY0-NEXT:    [[TMP4412:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4412]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5814]]
// SIMD-ONLY0:       if.end5814:
// SIMD-ONLY0-NEXT:    [[TMP4413:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4413]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4414:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4415:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5815:%.*]] = icmp eq i64 [[TMP4414]], [[TMP4415]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5815]], label [[IF_THEN5817:%.*]], label [[IF_ELSE5818:%.*]]
// SIMD-ONLY0:       if.then5817:
// SIMD-ONLY0-NEXT:    [[TMP4416:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4416]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5819:%.*]]
// SIMD-ONLY0:       if.else5818:
// SIMD-ONLY0-NEXT:    [[TMP4417:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4417]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5819]]
// SIMD-ONLY0:       if.end5819:
// SIMD-ONLY0-NEXT:    [[TMP4418:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4419:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5820:%.*]] = icmp eq i64 [[TMP4418]], [[TMP4419]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5820]], label [[IF_THEN5822:%.*]], label [[IF_ELSE5823:%.*]]
// SIMD-ONLY0:       if.then5822:
// SIMD-ONLY0-NEXT:    [[TMP4420:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4420]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5824:%.*]]
// SIMD-ONLY0:       if.else5823:
// SIMD-ONLY0-NEXT:    [[TMP4421:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4421]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5824]]
// SIMD-ONLY0:       if.end5824:
// SIMD-ONLY0-NEXT:    [[TMP4422:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4423:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5825:%.*]] = icmp eq i64 [[TMP4422]], [[TMP4423]]
// SIMD-ONLY0-NEXT:    [[CONV5826:%.*]] = zext i1 [[CMP5825]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5827:%.*]] = sext i32 [[CONV5826]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5827]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4424:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5828:%.*]] = icmp ne i64 [[TMP4424]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5828]], label [[IF_THEN5829:%.*]], label [[IF_END5830:%.*]]
// SIMD-ONLY0:       if.then5829:
// SIMD-ONLY0-NEXT:    [[TMP4425:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4425]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5830]]
// SIMD-ONLY0:       if.end5830:
// SIMD-ONLY0-NEXT:    [[TMP4426:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4427:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5831:%.*]] = icmp eq i64 [[TMP4426]], [[TMP4427]]
// SIMD-ONLY0-NEXT:    [[CONV5832:%.*]] = zext i1 [[CMP5831]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5833:%.*]] = sext i32 [[CONV5832]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5833]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4428:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5834:%.*]] = icmp ne i64 [[TMP4428]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5834]], label [[IF_THEN5835:%.*]], label [[IF_END5836:%.*]]
// SIMD-ONLY0:       if.then5835:
// SIMD-ONLY0-NEXT:    [[TMP4429:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4429]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5836]]
// SIMD-ONLY0:       if.end5836:
// SIMD-ONLY0-NEXT:    [[TMP4430:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4431:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5837:%.*]] = icmp eq i64 [[TMP4430]], [[TMP4431]]
// SIMD-ONLY0-NEXT:    [[CONV5838:%.*]] = zext i1 [[CMP5837]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5839:%.*]] = sext i32 [[CONV5838]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5839]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4432:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5840:%.*]] = icmp ne i64 [[TMP4432]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5840]], label [[IF_THEN5841:%.*]], label [[IF_ELSE5842:%.*]]
// SIMD-ONLY0:       if.then5841:
// SIMD-ONLY0-NEXT:    [[TMP4433:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4433]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5843:%.*]]
// SIMD-ONLY0:       if.else5842:
// SIMD-ONLY0-NEXT:    [[TMP4434:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4434]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5843]]
// SIMD-ONLY0:       if.end5843:
// SIMD-ONLY0-NEXT:    [[TMP4435:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4436:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP5844:%.*]] = icmp eq i64 [[TMP4435]], [[TMP4436]]
// SIMD-ONLY0-NEXT:    [[CONV5845:%.*]] = zext i1 [[CMP5844]] to i32
// SIMD-ONLY0-NEXT:    [[CONV5846:%.*]] = sext i32 [[CONV5845]] to i64
// SIMD-ONLY0-NEXT:    store i64 [[CONV5846]], ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4437:%.*]] = load i64, ptr [[ULLR]], align 8
// SIMD-ONLY0-NEXT:    [[TOBOOL5847:%.*]] = icmp ne i64 [[TMP4437]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5847]], label [[IF_THEN5848:%.*]], label [[IF_ELSE5849:%.*]]
// SIMD-ONLY0:       if.then5848:
// SIMD-ONLY0-NEXT:    [[TMP4438:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4438]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5850:%.*]]
// SIMD-ONLY0:       if.else5849:
// SIMD-ONLY0-NEXT:    [[TMP4439:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP4439]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END5850]]
// SIMD-ONLY0:       if.end5850:
// SIMD-ONLY0-NEXT:    [[TMP4440:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4440]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4441:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4442:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5851:%.*]] = fcmp ogt float [[TMP4441]], [[TMP4442]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5851]], label [[IF_THEN5853:%.*]], label [[IF_END5854:%.*]]
// SIMD-ONLY0:       if.then5853:
// SIMD-ONLY0-NEXT:    [[TMP4443:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4443]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5854]]
// SIMD-ONLY0:       if.end5854:
// SIMD-ONLY0-NEXT:    [[TMP4444:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4444]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4445:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4446:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5855:%.*]] = fcmp ogt float [[TMP4445]], [[TMP4446]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5855]], label [[IF_THEN5857:%.*]], label [[IF_END5858:%.*]]
// SIMD-ONLY0:       if.then5857:
// SIMD-ONLY0-NEXT:    [[TMP4447:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4447]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5858]]
// SIMD-ONLY0:       if.end5858:
// SIMD-ONLY0-NEXT:    [[TMP4448:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4448]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4449:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4450:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5859:%.*]] = fcmp olt float [[TMP4449]], [[TMP4450]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5859]], label [[IF_THEN5861:%.*]], label [[IF_END5862:%.*]]
// SIMD-ONLY0:       if.then5861:
// SIMD-ONLY0-NEXT:    [[TMP4451:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4451]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5862]]
// SIMD-ONLY0:       if.end5862:
// SIMD-ONLY0-NEXT:    [[TMP4452:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4452]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4453:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4454:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5863:%.*]] = fcmp olt float [[TMP4453]], [[TMP4454]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5863]], label [[IF_THEN5865:%.*]], label [[IF_END5866:%.*]]
// SIMD-ONLY0:       if.then5865:
// SIMD-ONLY0-NEXT:    [[TMP4455:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4455]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5866]]
// SIMD-ONLY0:       if.end5866:
// SIMD-ONLY0-NEXT:    [[TMP4456:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4456]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4457:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4458:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5867:%.*]] = fcmp oeq float [[TMP4457]], [[TMP4458]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5867]], label [[IF_THEN5869:%.*]], label [[IF_END5870:%.*]]
// SIMD-ONLY0:       if.then5869:
// SIMD-ONLY0-NEXT:    [[TMP4459:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4459]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5870]]
// SIMD-ONLY0:       if.end5870:
// SIMD-ONLY0-NEXT:    [[TMP4460:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4460]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4461:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4462:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5871:%.*]] = fcmp oeq float [[TMP4461]], [[TMP4462]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5871]], label [[IF_THEN5873:%.*]], label [[IF_END5874:%.*]]
// SIMD-ONLY0:       if.then5873:
// SIMD-ONLY0-NEXT:    [[TMP4463:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4463]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5874]]
// SIMD-ONLY0:       if.end5874:
// SIMD-ONLY0-NEXT:    [[TMP4464:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4465:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5875:%.*]] = fcmp ogt float [[TMP4464]], [[TMP4465]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5875]], label [[IF_THEN5877:%.*]], label [[IF_END5878:%.*]]
// SIMD-ONLY0:       if.then5877:
// SIMD-ONLY0-NEXT:    [[TMP4466:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4466]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5878]]
// SIMD-ONLY0:       if.end5878:
// SIMD-ONLY0-NEXT:    [[TMP4467:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4467]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4468:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4469:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5879:%.*]] = fcmp ogt float [[TMP4468]], [[TMP4469]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5879]], label [[IF_THEN5881:%.*]], label [[IF_END5882:%.*]]
// SIMD-ONLY0:       if.then5881:
// SIMD-ONLY0-NEXT:    [[TMP4470:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4470]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5882]]
// SIMD-ONLY0:       if.end5882:
// SIMD-ONLY0-NEXT:    [[TMP4471:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4471]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4472:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4473:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5883:%.*]] = fcmp olt float [[TMP4472]], [[TMP4473]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5883]], label [[IF_THEN5885:%.*]], label [[IF_END5886:%.*]]
// SIMD-ONLY0:       if.then5885:
// SIMD-ONLY0-NEXT:    [[TMP4474:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4474]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5886]]
// SIMD-ONLY0:       if.end5886:
// SIMD-ONLY0-NEXT:    [[TMP4475:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4475]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4476:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4477:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5887:%.*]] = fcmp olt float [[TMP4476]], [[TMP4477]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5887]], label [[IF_THEN5889:%.*]], label [[IF_END5890:%.*]]
// SIMD-ONLY0:       if.then5889:
// SIMD-ONLY0-NEXT:    [[TMP4478:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4478]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5890]]
// SIMD-ONLY0:       if.end5890:
// SIMD-ONLY0-NEXT:    [[TMP4479:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4479]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4480:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4481:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5891:%.*]] = fcmp oeq float [[TMP4480]], [[TMP4481]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5891]], label [[IF_THEN5893:%.*]], label [[IF_END5894:%.*]]
// SIMD-ONLY0:       if.then5893:
// SIMD-ONLY0-NEXT:    [[TMP4482:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4482]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5894]]
// SIMD-ONLY0:       if.end5894:
// SIMD-ONLY0-NEXT:    [[TMP4483:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4483]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4484:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4485:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5895:%.*]] = fcmp oeq float [[TMP4484]], [[TMP4485]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5895]], label [[IF_THEN5897:%.*]], label [[IF_END5898:%.*]]
// SIMD-ONLY0:       if.then5897:
// SIMD-ONLY0-NEXT:    [[TMP4486:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4486]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5898]]
// SIMD-ONLY0:       if.end5898:
// SIMD-ONLY0-NEXT:    [[TMP4487:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4487]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4488:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4489:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5899:%.*]] = fcmp oeq float [[TMP4488]], [[TMP4489]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5899]], label [[IF_THEN5901:%.*]], label [[IF_ELSE5902:%.*]]
// SIMD-ONLY0:       if.then5901:
// SIMD-ONLY0-NEXT:    [[TMP4490:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4490]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5903:%.*]]
// SIMD-ONLY0:       if.else5902:
// SIMD-ONLY0-NEXT:    [[TMP4491:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4491]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5903]]
// SIMD-ONLY0:       if.end5903:
// SIMD-ONLY0-NEXT:    [[TMP4492:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4493:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5904:%.*]] = fcmp oeq float [[TMP4492]], [[TMP4493]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5904]], label [[IF_THEN5906:%.*]], label [[IF_ELSE5907:%.*]]
// SIMD-ONLY0:       if.then5906:
// SIMD-ONLY0-NEXT:    [[TMP4494:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4494]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5908:%.*]]
// SIMD-ONLY0:       if.else5907:
// SIMD-ONLY0-NEXT:    [[TMP4495:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4495]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5908]]
// SIMD-ONLY0:       if.end5908:
// SIMD-ONLY0-NEXT:    [[TMP4496:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4497:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5909:%.*]] = fcmp oeq float [[TMP4496]], [[TMP4497]]
// SIMD-ONLY0-NEXT:    [[CONV5910:%.*]] = zext i1 [[CMP5909]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV5910]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4498:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL5911:%.*]] = icmp ne i32 [[TMP4498]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5911]], label [[IF_THEN5912:%.*]], label [[IF_END5913:%.*]]
// SIMD-ONLY0:       if.then5912:
// SIMD-ONLY0-NEXT:    [[TMP4499:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4499]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5913]]
// SIMD-ONLY0:       if.end5913:
// SIMD-ONLY0-NEXT:    [[TMP4500:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4501:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5914:%.*]] = fcmp oeq float [[TMP4500]], [[TMP4501]]
// SIMD-ONLY0-NEXT:    [[CONV5915:%.*]] = zext i1 [[CMP5914]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV5915]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4502:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL5916:%.*]] = icmp ne i32 [[TMP4502]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5916]], label [[IF_THEN5917:%.*]], label [[IF_END5918:%.*]]
// SIMD-ONLY0:       if.then5917:
// SIMD-ONLY0-NEXT:    [[TMP4503:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4503]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5918]]
// SIMD-ONLY0:       if.end5918:
// SIMD-ONLY0-NEXT:    [[TMP4504:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4505:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5919:%.*]] = fcmp oeq float [[TMP4504]], [[TMP4505]]
// SIMD-ONLY0-NEXT:    [[CONV5920:%.*]] = zext i1 [[CMP5919]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV5920]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4506:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL5921:%.*]] = icmp ne i32 [[TMP4506]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5921]], label [[IF_THEN5922:%.*]], label [[IF_ELSE5923:%.*]]
// SIMD-ONLY0:       if.then5922:
// SIMD-ONLY0-NEXT:    [[TMP4507:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4507]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5924:%.*]]
// SIMD-ONLY0:       if.else5923:
// SIMD-ONLY0-NEXT:    [[TMP4508:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4508]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5924]]
// SIMD-ONLY0:       if.end5924:
// SIMD-ONLY0-NEXT:    [[TMP4509:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4510:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5925:%.*]] = fcmp oeq float [[TMP4509]], [[TMP4510]]
// SIMD-ONLY0-NEXT:    [[CONV5926:%.*]] = zext i1 [[CMP5925]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV5926]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4511:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL5927:%.*]] = icmp ne i32 [[TMP4511]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5927]], label [[IF_THEN5928:%.*]], label [[IF_ELSE5929:%.*]]
// SIMD-ONLY0:       if.then5928:
// SIMD-ONLY0-NEXT:    [[TMP4512:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4512]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5930:%.*]]
// SIMD-ONLY0:       if.else5929:
// SIMD-ONLY0-NEXT:    [[TMP4513:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4513]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5930]]
// SIMD-ONLY0:       if.end5930:
// SIMD-ONLY0-NEXT:    [[TMP4514:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4514]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4515:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4516:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5931:%.*]] = fcmp ogt float [[TMP4515]], [[TMP4516]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5931]], label [[IF_THEN5933:%.*]], label [[IF_END5934:%.*]]
// SIMD-ONLY0:       if.then5933:
// SIMD-ONLY0-NEXT:    [[TMP4517:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4517]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5934]]
// SIMD-ONLY0:       if.end5934:
// SIMD-ONLY0-NEXT:    [[TMP4518:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4518]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4519:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4520:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5935:%.*]] = fcmp ogt float [[TMP4519]], [[TMP4520]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5935]], label [[IF_THEN5937:%.*]], label [[IF_END5938:%.*]]
// SIMD-ONLY0:       if.then5937:
// SIMD-ONLY0-NEXT:    [[TMP4521:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4521]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5938]]
// SIMD-ONLY0:       if.end5938:
// SIMD-ONLY0-NEXT:    [[TMP4522:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4522]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4523:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4524:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5939:%.*]] = fcmp olt float [[TMP4523]], [[TMP4524]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5939]], label [[IF_THEN5941:%.*]], label [[IF_END5942:%.*]]
// SIMD-ONLY0:       if.then5941:
// SIMD-ONLY0-NEXT:    [[TMP4525:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4525]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5942]]
// SIMD-ONLY0:       if.end5942:
// SIMD-ONLY0-NEXT:    [[TMP4526:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4526]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4527:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4528:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5943:%.*]] = fcmp olt float [[TMP4527]], [[TMP4528]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5943]], label [[IF_THEN5945:%.*]], label [[IF_END5946:%.*]]
// SIMD-ONLY0:       if.then5945:
// SIMD-ONLY0-NEXT:    [[TMP4529:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4529]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5946]]
// SIMD-ONLY0:       if.end5946:
// SIMD-ONLY0-NEXT:    [[TMP4530:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4530]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4531:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4532:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5947:%.*]] = fcmp oeq float [[TMP4531]], [[TMP4532]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5947]], label [[IF_THEN5949:%.*]], label [[IF_END5950:%.*]]
// SIMD-ONLY0:       if.then5949:
// SIMD-ONLY0-NEXT:    [[TMP4533:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4533]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5950]]
// SIMD-ONLY0:       if.end5950:
// SIMD-ONLY0-NEXT:    [[TMP4534:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4534]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4535:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4536:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5951:%.*]] = fcmp oeq float [[TMP4535]], [[TMP4536]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5951]], label [[IF_THEN5953:%.*]], label [[IF_END5954:%.*]]
// SIMD-ONLY0:       if.then5953:
// SIMD-ONLY0-NEXT:    [[TMP4537:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4537]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5954]]
// SIMD-ONLY0:       if.end5954:
// SIMD-ONLY0-NEXT:    [[TMP4538:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4539:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5955:%.*]] = fcmp ogt float [[TMP4538]], [[TMP4539]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5955]], label [[IF_THEN5957:%.*]], label [[IF_END5958:%.*]]
// SIMD-ONLY0:       if.then5957:
// SIMD-ONLY0-NEXT:    [[TMP4540:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4540]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5958]]
// SIMD-ONLY0:       if.end5958:
// SIMD-ONLY0-NEXT:    [[TMP4541:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4541]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4542:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4543:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5959:%.*]] = fcmp ogt float [[TMP4542]], [[TMP4543]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5959]], label [[IF_THEN5961:%.*]], label [[IF_END5962:%.*]]
// SIMD-ONLY0:       if.then5961:
// SIMD-ONLY0-NEXT:    [[TMP4544:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4544]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5962]]
// SIMD-ONLY0:       if.end5962:
// SIMD-ONLY0-NEXT:    [[TMP4545:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4545]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4546:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4547:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5963:%.*]] = fcmp olt float [[TMP4546]], [[TMP4547]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5963]], label [[IF_THEN5965:%.*]], label [[IF_END5966:%.*]]
// SIMD-ONLY0:       if.then5965:
// SIMD-ONLY0-NEXT:    [[TMP4548:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4548]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5966]]
// SIMD-ONLY0:       if.end5966:
// SIMD-ONLY0-NEXT:    [[TMP4549:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4549]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4550:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4551:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5967:%.*]] = fcmp olt float [[TMP4550]], [[TMP4551]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5967]], label [[IF_THEN5969:%.*]], label [[IF_END5970:%.*]]
// SIMD-ONLY0:       if.then5969:
// SIMD-ONLY0-NEXT:    [[TMP4552:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4552]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5970]]
// SIMD-ONLY0:       if.end5970:
// SIMD-ONLY0-NEXT:    [[TMP4553:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4553]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4554:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4555:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5971:%.*]] = fcmp oeq float [[TMP4554]], [[TMP4555]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5971]], label [[IF_THEN5973:%.*]], label [[IF_END5974:%.*]]
// SIMD-ONLY0:       if.then5973:
// SIMD-ONLY0-NEXT:    [[TMP4556:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4556]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5974]]
// SIMD-ONLY0:       if.end5974:
// SIMD-ONLY0-NEXT:    [[TMP4557:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4557]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4558:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4559:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5975:%.*]] = fcmp oeq float [[TMP4558]], [[TMP4559]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5975]], label [[IF_THEN5977:%.*]], label [[IF_END5978:%.*]]
// SIMD-ONLY0:       if.then5977:
// SIMD-ONLY0-NEXT:    [[TMP4560:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4560]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5978]]
// SIMD-ONLY0:       if.end5978:
// SIMD-ONLY0-NEXT:    [[TMP4561:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4561]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4562:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4563:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5979:%.*]] = fcmp oeq float [[TMP4562]], [[TMP4563]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5979]], label [[IF_THEN5981:%.*]], label [[IF_ELSE5982:%.*]]
// SIMD-ONLY0:       if.then5981:
// SIMD-ONLY0-NEXT:    [[TMP4564:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4564]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5983:%.*]]
// SIMD-ONLY0:       if.else5982:
// SIMD-ONLY0-NEXT:    [[TMP4565:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4565]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5983]]
// SIMD-ONLY0:       if.end5983:
// SIMD-ONLY0-NEXT:    [[TMP4566:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4567:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5984:%.*]] = fcmp oeq float [[TMP4566]], [[TMP4567]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP5984]], label [[IF_THEN5986:%.*]], label [[IF_ELSE5987:%.*]]
// SIMD-ONLY0:       if.then5986:
// SIMD-ONLY0-NEXT:    [[TMP4568:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4568]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5988:%.*]]
// SIMD-ONLY0:       if.else5987:
// SIMD-ONLY0-NEXT:    [[TMP4569:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4569]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5988]]
// SIMD-ONLY0:       if.end5988:
// SIMD-ONLY0-NEXT:    [[TMP4570:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4571:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5989:%.*]] = fcmp oeq float [[TMP4570]], [[TMP4571]]
// SIMD-ONLY0-NEXT:    [[CONV5990:%.*]] = zext i1 [[CMP5989]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV5990]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4572:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL5991:%.*]] = icmp ne i32 [[TMP4572]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5991]], label [[IF_THEN5992:%.*]], label [[IF_END5993:%.*]]
// SIMD-ONLY0:       if.then5992:
// SIMD-ONLY0-NEXT:    [[TMP4573:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4573]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5993]]
// SIMD-ONLY0:       if.end5993:
// SIMD-ONLY0-NEXT:    [[TMP4574:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4575:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5994:%.*]] = fcmp oeq float [[TMP4574]], [[TMP4575]]
// SIMD-ONLY0-NEXT:    [[CONV5995:%.*]] = zext i1 [[CMP5994]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV5995]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4576:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL5996:%.*]] = icmp ne i32 [[TMP4576]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL5996]], label [[IF_THEN5997:%.*]], label [[IF_END5998:%.*]]
// SIMD-ONLY0:       if.then5997:
// SIMD-ONLY0-NEXT:    [[TMP4577:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4577]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END5998]]
// SIMD-ONLY0:       if.end5998:
// SIMD-ONLY0-NEXT:    [[TMP4578:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4579:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP5999:%.*]] = fcmp oeq float [[TMP4578]], [[TMP4579]]
// SIMD-ONLY0-NEXT:    [[CONV6000:%.*]] = zext i1 [[CMP5999]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6000]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4580:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6001:%.*]] = icmp ne i32 [[TMP4580]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6001]], label [[IF_THEN6002:%.*]], label [[IF_ELSE6003:%.*]]
// SIMD-ONLY0:       if.then6002:
// SIMD-ONLY0-NEXT:    [[TMP4581:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4581]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6004:%.*]]
// SIMD-ONLY0:       if.else6003:
// SIMD-ONLY0-NEXT:    [[TMP4582:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4582]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6004]]
// SIMD-ONLY0:       if.end6004:
// SIMD-ONLY0-NEXT:    [[TMP4583:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4584:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6005:%.*]] = fcmp oeq float [[TMP4583]], [[TMP4584]]
// SIMD-ONLY0-NEXT:    [[CONV6006:%.*]] = zext i1 [[CMP6005]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6006]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4585:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6007:%.*]] = icmp ne i32 [[TMP4585]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6007]], label [[IF_THEN6008:%.*]], label [[IF_ELSE6009:%.*]]
// SIMD-ONLY0:       if.then6008:
// SIMD-ONLY0-NEXT:    [[TMP4586:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4586]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6010:%.*]]
// SIMD-ONLY0:       if.else6009:
// SIMD-ONLY0-NEXT:    [[TMP4587:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4587]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6010]]
// SIMD-ONLY0:       if.end6010:
// SIMD-ONLY0-NEXT:    [[TMP4588:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4588]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4589:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4590:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6011:%.*]] = fcmp ogt float [[TMP4589]], [[TMP4590]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6011]], label [[IF_THEN6013:%.*]], label [[IF_END6014:%.*]]
// SIMD-ONLY0:       if.then6013:
// SIMD-ONLY0-NEXT:    [[TMP4591:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4591]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6014]]
// SIMD-ONLY0:       if.end6014:
// SIMD-ONLY0-NEXT:    [[TMP4592:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4592]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4593:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4594:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6015:%.*]] = fcmp ogt float [[TMP4593]], [[TMP4594]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6015]], label [[IF_THEN6017:%.*]], label [[IF_END6018:%.*]]
// SIMD-ONLY0:       if.then6017:
// SIMD-ONLY0-NEXT:    [[TMP4595:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4595]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6018]]
// SIMD-ONLY0:       if.end6018:
// SIMD-ONLY0-NEXT:    [[TMP4596:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4596]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4597:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4598:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6019:%.*]] = fcmp olt float [[TMP4597]], [[TMP4598]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6019]], label [[IF_THEN6021:%.*]], label [[IF_END6022:%.*]]
// SIMD-ONLY0:       if.then6021:
// SIMD-ONLY0-NEXT:    [[TMP4599:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4599]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6022]]
// SIMD-ONLY0:       if.end6022:
// SIMD-ONLY0-NEXT:    [[TMP4600:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4600]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4601:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4602:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6023:%.*]] = fcmp olt float [[TMP4601]], [[TMP4602]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6023]], label [[IF_THEN6025:%.*]], label [[IF_END6026:%.*]]
// SIMD-ONLY0:       if.then6025:
// SIMD-ONLY0-NEXT:    [[TMP4603:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4603]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6026]]
// SIMD-ONLY0:       if.end6026:
// SIMD-ONLY0-NEXT:    [[TMP4604:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4604]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4605:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4606:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6027:%.*]] = fcmp oeq float [[TMP4605]], [[TMP4606]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6027]], label [[IF_THEN6029:%.*]], label [[IF_END6030:%.*]]
// SIMD-ONLY0:       if.then6029:
// SIMD-ONLY0-NEXT:    [[TMP4607:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4607]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6030]]
// SIMD-ONLY0:       if.end6030:
// SIMD-ONLY0-NEXT:    [[TMP4608:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4608]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4609:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4610:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6031:%.*]] = fcmp oeq float [[TMP4609]], [[TMP4610]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6031]], label [[IF_THEN6033:%.*]], label [[IF_END6034:%.*]]
// SIMD-ONLY0:       if.then6033:
// SIMD-ONLY0-NEXT:    [[TMP4611:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4611]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6034]]
// SIMD-ONLY0:       if.end6034:
// SIMD-ONLY0-NEXT:    [[TMP4612:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4613:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6035:%.*]] = fcmp ogt float [[TMP4612]], [[TMP4613]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6035]], label [[IF_THEN6037:%.*]], label [[IF_END6038:%.*]]
// SIMD-ONLY0:       if.then6037:
// SIMD-ONLY0-NEXT:    [[TMP4614:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4614]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6038]]
// SIMD-ONLY0:       if.end6038:
// SIMD-ONLY0-NEXT:    [[TMP4615:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4615]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4616:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4617:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6039:%.*]] = fcmp ogt float [[TMP4616]], [[TMP4617]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6039]], label [[IF_THEN6041:%.*]], label [[IF_END6042:%.*]]
// SIMD-ONLY0:       if.then6041:
// SIMD-ONLY0-NEXT:    [[TMP4618:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4618]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6042]]
// SIMD-ONLY0:       if.end6042:
// SIMD-ONLY0-NEXT:    [[TMP4619:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4619]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4620:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4621:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6043:%.*]] = fcmp olt float [[TMP4620]], [[TMP4621]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6043]], label [[IF_THEN6045:%.*]], label [[IF_END6046:%.*]]
// SIMD-ONLY0:       if.then6045:
// SIMD-ONLY0-NEXT:    [[TMP4622:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4622]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6046]]
// SIMD-ONLY0:       if.end6046:
// SIMD-ONLY0-NEXT:    [[TMP4623:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4623]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4624:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4625:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6047:%.*]] = fcmp olt float [[TMP4624]], [[TMP4625]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6047]], label [[IF_THEN6049:%.*]], label [[IF_END6050:%.*]]
// SIMD-ONLY0:       if.then6049:
// SIMD-ONLY0-NEXT:    [[TMP4626:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4626]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6050]]
// SIMD-ONLY0:       if.end6050:
// SIMD-ONLY0-NEXT:    [[TMP4627:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4627]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4628:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4629:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6051:%.*]] = fcmp oeq float [[TMP4628]], [[TMP4629]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6051]], label [[IF_THEN6053:%.*]], label [[IF_END6054:%.*]]
// SIMD-ONLY0:       if.then6053:
// SIMD-ONLY0-NEXT:    [[TMP4630:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4630]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6054]]
// SIMD-ONLY0:       if.end6054:
// SIMD-ONLY0-NEXT:    [[TMP4631:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4631]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4632:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4633:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6055:%.*]] = fcmp oeq float [[TMP4632]], [[TMP4633]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6055]], label [[IF_THEN6057:%.*]], label [[IF_END6058:%.*]]
// SIMD-ONLY0:       if.then6057:
// SIMD-ONLY0-NEXT:    [[TMP4634:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4634]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6058]]
// SIMD-ONLY0:       if.end6058:
// SIMD-ONLY0-NEXT:    [[TMP4635:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4635]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4636:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4637:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6059:%.*]] = fcmp oeq float [[TMP4636]], [[TMP4637]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6059]], label [[IF_THEN6061:%.*]], label [[IF_ELSE6062:%.*]]
// SIMD-ONLY0:       if.then6061:
// SIMD-ONLY0-NEXT:    [[TMP4638:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4638]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6063:%.*]]
// SIMD-ONLY0:       if.else6062:
// SIMD-ONLY0-NEXT:    [[TMP4639:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4639]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6063]]
// SIMD-ONLY0:       if.end6063:
// SIMD-ONLY0-NEXT:    [[TMP4640:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4641:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6064:%.*]] = fcmp oeq float [[TMP4640]], [[TMP4641]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6064]], label [[IF_THEN6066:%.*]], label [[IF_ELSE6067:%.*]]
// SIMD-ONLY0:       if.then6066:
// SIMD-ONLY0-NEXT:    [[TMP4642:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4642]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6068:%.*]]
// SIMD-ONLY0:       if.else6067:
// SIMD-ONLY0-NEXT:    [[TMP4643:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4643]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6068]]
// SIMD-ONLY0:       if.end6068:
// SIMD-ONLY0-NEXT:    [[TMP4644:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4645:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6069:%.*]] = fcmp oeq float [[TMP4644]], [[TMP4645]]
// SIMD-ONLY0-NEXT:    [[CONV6070:%.*]] = zext i1 [[CMP6069]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6070]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4646:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6071:%.*]] = icmp ne i32 [[TMP4646]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6071]], label [[IF_THEN6072:%.*]], label [[IF_END6073:%.*]]
// SIMD-ONLY0:       if.then6072:
// SIMD-ONLY0-NEXT:    [[TMP4647:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4647]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6073]]
// SIMD-ONLY0:       if.end6073:
// SIMD-ONLY0-NEXT:    [[TMP4648:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4649:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6074:%.*]] = fcmp oeq float [[TMP4648]], [[TMP4649]]
// SIMD-ONLY0-NEXT:    [[CONV6075:%.*]] = zext i1 [[CMP6074]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6075]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4650:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6076:%.*]] = icmp ne i32 [[TMP4650]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6076]], label [[IF_THEN6077:%.*]], label [[IF_END6078:%.*]]
// SIMD-ONLY0:       if.then6077:
// SIMD-ONLY0-NEXT:    [[TMP4651:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4651]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6078]]
// SIMD-ONLY0:       if.end6078:
// SIMD-ONLY0-NEXT:    [[TMP4652:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4653:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6079:%.*]] = fcmp oeq float [[TMP4652]], [[TMP4653]]
// SIMD-ONLY0-NEXT:    [[CONV6080:%.*]] = zext i1 [[CMP6079]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6080]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4654:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6081:%.*]] = icmp ne i32 [[TMP4654]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6081]], label [[IF_THEN6082:%.*]], label [[IF_ELSE6083:%.*]]
// SIMD-ONLY0:       if.then6082:
// SIMD-ONLY0-NEXT:    [[TMP4655:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4655]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6084:%.*]]
// SIMD-ONLY0:       if.else6083:
// SIMD-ONLY0-NEXT:    [[TMP4656:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4656]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6084]]
// SIMD-ONLY0:       if.end6084:
// SIMD-ONLY0-NEXT:    [[TMP4657:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4658:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6085:%.*]] = fcmp oeq float [[TMP4657]], [[TMP4658]]
// SIMD-ONLY0-NEXT:    [[CONV6086:%.*]] = zext i1 [[CMP6085]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6086]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4659:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6087:%.*]] = icmp ne i32 [[TMP4659]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6087]], label [[IF_THEN6088:%.*]], label [[IF_ELSE6089:%.*]]
// SIMD-ONLY0:       if.then6088:
// SIMD-ONLY0-NEXT:    [[TMP4660:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4660]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6090:%.*]]
// SIMD-ONLY0:       if.else6089:
// SIMD-ONLY0-NEXT:    [[TMP4661:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4661]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6090]]
// SIMD-ONLY0:       if.end6090:
// SIMD-ONLY0-NEXT:    [[TMP4662:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4662]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4663:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4664:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6091:%.*]] = fcmp ogt float [[TMP4663]], [[TMP4664]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6091]], label [[IF_THEN6093:%.*]], label [[IF_END6094:%.*]]
// SIMD-ONLY0:       if.then6093:
// SIMD-ONLY0-NEXT:    [[TMP4665:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4665]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6094]]
// SIMD-ONLY0:       if.end6094:
// SIMD-ONLY0-NEXT:    [[TMP4666:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4666]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4667:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4668:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6095:%.*]] = fcmp ogt float [[TMP4667]], [[TMP4668]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6095]], label [[IF_THEN6097:%.*]], label [[IF_END6098:%.*]]
// SIMD-ONLY0:       if.then6097:
// SIMD-ONLY0-NEXT:    [[TMP4669:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4669]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6098]]
// SIMD-ONLY0:       if.end6098:
// SIMD-ONLY0-NEXT:    [[TMP4670:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4670]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4671:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4672:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6099:%.*]] = fcmp olt float [[TMP4671]], [[TMP4672]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6099]], label [[IF_THEN6101:%.*]], label [[IF_END6102:%.*]]
// SIMD-ONLY0:       if.then6101:
// SIMD-ONLY0-NEXT:    [[TMP4673:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4673]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6102]]
// SIMD-ONLY0:       if.end6102:
// SIMD-ONLY0-NEXT:    [[TMP4674:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4674]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4675:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4676:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6103:%.*]] = fcmp olt float [[TMP4675]], [[TMP4676]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6103]], label [[IF_THEN6105:%.*]], label [[IF_END6106:%.*]]
// SIMD-ONLY0:       if.then6105:
// SIMD-ONLY0-NEXT:    [[TMP4677:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4677]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6106]]
// SIMD-ONLY0:       if.end6106:
// SIMD-ONLY0-NEXT:    [[TMP4678:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4678]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4679:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4680:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6107:%.*]] = fcmp oeq float [[TMP4679]], [[TMP4680]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6107]], label [[IF_THEN6109:%.*]], label [[IF_END6110:%.*]]
// SIMD-ONLY0:       if.then6109:
// SIMD-ONLY0-NEXT:    [[TMP4681:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4681]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6110]]
// SIMD-ONLY0:       if.end6110:
// SIMD-ONLY0-NEXT:    [[TMP4682:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4682]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4683:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4684:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6111:%.*]] = fcmp oeq float [[TMP4683]], [[TMP4684]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6111]], label [[IF_THEN6113:%.*]], label [[IF_END6114:%.*]]
// SIMD-ONLY0:       if.then6113:
// SIMD-ONLY0-NEXT:    [[TMP4685:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4685]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6114]]
// SIMD-ONLY0:       if.end6114:
// SIMD-ONLY0-NEXT:    [[TMP4686:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4687:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6115:%.*]] = fcmp ogt float [[TMP4686]], [[TMP4687]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6115]], label [[IF_THEN6117:%.*]], label [[IF_END6118:%.*]]
// SIMD-ONLY0:       if.then6117:
// SIMD-ONLY0-NEXT:    [[TMP4688:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4688]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6118]]
// SIMD-ONLY0:       if.end6118:
// SIMD-ONLY0-NEXT:    [[TMP4689:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4689]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4690:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4691:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6119:%.*]] = fcmp ogt float [[TMP4690]], [[TMP4691]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6119]], label [[IF_THEN6121:%.*]], label [[IF_END6122:%.*]]
// SIMD-ONLY0:       if.then6121:
// SIMD-ONLY0-NEXT:    [[TMP4692:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4692]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6122]]
// SIMD-ONLY0:       if.end6122:
// SIMD-ONLY0-NEXT:    [[TMP4693:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4693]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4694:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4695:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6123:%.*]] = fcmp olt float [[TMP4694]], [[TMP4695]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6123]], label [[IF_THEN6125:%.*]], label [[IF_END6126:%.*]]
// SIMD-ONLY0:       if.then6125:
// SIMD-ONLY0-NEXT:    [[TMP4696:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4696]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6126]]
// SIMD-ONLY0:       if.end6126:
// SIMD-ONLY0-NEXT:    [[TMP4697:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4697]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4698:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4699:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6127:%.*]] = fcmp olt float [[TMP4698]], [[TMP4699]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6127]], label [[IF_THEN6129:%.*]], label [[IF_END6130:%.*]]
// SIMD-ONLY0:       if.then6129:
// SIMD-ONLY0-NEXT:    [[TMP4700:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4700]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6130]]
// SIMD-ONLY0:       if.end6130:
// SIMD-ONLY0-NEXT:    [[TMP4701:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4701]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4702:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4703:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6131:%.*]] = fcmp oeq float [[TMP4702]], [[TMP4703]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6131]], label [[IF_THEN6133:%.*]], label [[IF_END6134:%.*]]
// SIMD-ONLY0:       if.then6133:
// SIMD-ONLY0-NEXT:    [[TMP4704:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4704]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6134]]
// SIMD-ONLY0:       if.end6134:
// SIMD-ONLY0-NEXT:    [[TMP4705:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4705]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4706:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4707:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6135:%.*]] = fcmp oeq float [[TMP4706]], [[TMP4707]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6135]], label [[IF_THEN6137:%.*]], label [[IF_END6138:%.*]]
// SIMD-ONLY0:       if.then6137:
// SIMD-ONLY0-NEXT:    [[TMP4708:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4708]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6138]]
// SIMD-ONLY0:       if.end6138:
// SIMD-ONLY0-NEXT:    [[TMP4709:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4709]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4710:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4711:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6139:%.*]] = fcmp oeq float [[TMP4710]], [[TMP4711]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6139]], label [[IF_THEN6141:%.*]], label [[IF_ELSE6142:%.*]]
// SIMD-ONLY0:       if.then6141:
// SIMD-ONLY0-NEXT:    [[TMP4712:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4712]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6143:%.*]]
// SIMD-ONLY0:       if.else6142:
// SIMD-ONLY0-NEXT:    [[TMP4713:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4713]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6143]]
// SIMD-ONLY0:       if.end6143:
// SIMD-ONLY0-NEXT:    [[TMP4714:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4715:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6144:%.*]] = fcmp oeq float [[TMP4714]], [[TMP4715]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6144]], label [[IF_THEN6146:%.*]], label [[IF_ELSE6147:%.*]]
// SIMD-ONLY0:       if.then6146:
// SIMD-ONLY0-NEXT:    [[TMP4716:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4716]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6148:%.*]]
// SIMD-ONLY0:       if.else6147:
// SIMD-ONLY0-NEXT:    [[TMP4717:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4717]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6148]]
// SIMD-ONLY0:       if.end6148:
// SIMD-ONLY0-NEXT:    [[TMP4718:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4719:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6149:%.*]] = fcmp oeq float [[TMP4718]], [[TMP4719]]
// SIMD-ONLY0-NEXT:    [[CONV6150:%.*]] = zext i1 [[CMP6149]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6150]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4720:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6151:%.*]] = icmp ne i32 [[TMP4720]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6151]], label [[IF_THEN6152:%.*]], label [[IF_END6153:%.*]]
// SIMD-ONLY0:       if.then6152:
// SIMD-ONLY0-NEXT:    [[TMP4721:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4721]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6153]]
// SIMD-ONLY0:       if.end6153:
// SIMD-ONLY0-NEXT:    [[TMP4722:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4723:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6154:%.*]] = fcmp oeq float [[TMP4722]], [[TMP4723]]
// SIMD-ONLY0-NEXT:    [[CONV6155:%.*]] = zext i1 [[CMP6154]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6155]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4724:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6156:%.*]] = icmp ne i32 [[TMP4724]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6156]], label [[IF_THEN6157:%.*]], label [[IF_END6158:%.*]]
// SIMD-ONLY0:       if.then6157:
// SIMD-ONLY0-NEXT:    [[TMP4725:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4725]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6158]]
// SIMD-ONLY0:       if.end6158:
// SIMD-ONLY0-NEXT:    [[TMP4726:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4727:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6159:%.*]] = fcmp oeq float [[TMP4726]], [[TMP4727]]
// SIMD-ONLY0-NEXT:    [[CONV6160:%.*]] = zext i1 [[CMP6159]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6160]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4728:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6161:%.*]] = icmp ne i32 [[TMP4728]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6161]], label [[IF_THEN6162:%.*]], label [[IF_ELSE6163:%.*]]
// SIMD-ONLY0:       if.then6162:
// SIMD-ONLY0-NEXT:    [[TMP4729:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4729]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6164:%.*]]
// SIMD-ONLY0:       if.else6163:
// SIMD-ONLY0-NEXT:    [[TMP4730:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4730]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6164]]
// SIMD-ONLY0:       if.end6164:
// SIMD-ONLY0-NEXT:    [[TMP4731:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4732:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6165:%.*]] = fcmp oeq float [[TMP4731]], [[TMP4732]]
// SIMD-ONLY0-NEXT:    [[CONV6166:%.*]] = zext i1 [[CMP6165]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6166]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4733:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6167:%.*]] = icmp ne i32 [[TMP4733]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6167]], label [[IF_THEN6168:%.*]], label [[IF_ELSE6169:%.*]]
// SIMD-ONLY0:       if.then6168:
// SIMD-ONLY0-NEXT:    [[TMP4734:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4734]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6170:%.*]]
// SIMD-ONLY0:       if.else6169:
// SIMD-ONLY0-NEXT:    [[TMP4735:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4735]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6170]]
// SIMD-ONLY0:       if.end6170:
// SIMD-ONLY0-NEXT:    [[TMP4736:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4736]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4737:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4738:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6171:%.*]] = fcmp ogt float [[TMP4737]], [[TMP4738]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6171]], label [[IF_THEN6173:%.*]], label [[IF_END6174:%.*]]
// SIMD-ONLY0:       if.then6173:
// SIMD-ONLY0-NEXT:    [[TMP4739:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4739]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6174]]
// SIMD-ONLY0:       if.end6174:
// SIMD-ONLY0-NEXT:    [[TMP4740:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4740]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4741:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4742:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6175:%.*]] = fcmp ogt float [[TMP4741]], [[TMP4742]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6175]], label [[IF_THEN6177:%.*]], label [[IF_END6178:%.*]]
// SIMD-ONLY0:       if.then6177:
// SIMD-ONLY0-NEXT:    [[TMP4743:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4743]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6178]]
// SIMD-ONLY0:       if.end6178:
// SIMD-ONLY0-NEXT:    [[TMP4744:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4744]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4745:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4746:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6179:%.*]] = fcmp olt float [[TMP4745]], [[TMP4746]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6179]], label [[IF_THEN6181:%.*]], label [[IF_END6182:%.*]]
// SIMD-ONLY0:       if.then6181:
// SIMD-ONLY0-NEXT:    [[TMP4747:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4747]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6182]]
// SIMD-ONLY0:       if.end6182:
// SIMD-ONLY0-NEXT:    [[TMP4748:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4748]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4749:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4750:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6183:%.*]] = fcmp olt float [[TMP4749]], [[TMP4750]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6183]], label [[IF_THEN6185:%.*]], label [[IF_END6186:%.*]]
// SIMD-ONLY0:       if.then6185:
// SIMD-ONLY0-NEXT:    [[TMP4751:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4751]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6186]]
// SIMD-ONLY0:       if.end6186:
// SIMD-ONLY0-NEXT:    [[TMP4752:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4752]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4753:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4754:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6187:%.*]] = fcmp oeq float [[TMP4753]], [[TMP4754]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6187]], label [[IF_THEN6189:%.*]], label [[IF_END6190:%.*]]
// SIMD-ONLY0:       if.then6189:
// SIMD-ONLY0-NEXT:    [[TMP4755:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4755]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6190]]
// SIMD-ONLY0:       if.end6190:
// SIMD-ONLY0-NEXT:    [[TMP4756:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4756]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4757:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4758:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6191:%.*]] = fcmp oeq float [[TMP4757]], [[TMP4758]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6191]], label [[IF_THEN6193:%.*]], label [[IF_END6194:%.*]]
// SIMD-ONLY0:       if.then6193:
// SIMD-ONLY0-NEXT:    [[TMP4759:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4759]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6194]]
// SIMD-ONLY0:       if.end6194:
// SIMD-ONLY0-NEXT:    [[TMP4760:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4761:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6195:%.*]] = fcmp ogt float [[TMP4760]], [[TMP4761]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6195]], label [[IF_THEN6197:%.*]], label [[IF_END6198:%.*]]
// SIMD-ONLY0:       if.then6197:
// SIMD-ONLY0-NEXT:    [[TMP4762:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4762]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6198]]
// SIMD-ONLY0:       if.end6198:
// SIMD-ONLY0-NEXT:    [[TMP4763:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4763]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4764:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4765:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6199:%.*]] = fcmp ogt float [[TMP4764]], [[TMP4765]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6199]], label [[IF_THEN6201:%.*]], label [[IF_END6202:%.*]]
// SIMD-ONLY0:       if.then6201:
// SIMD-ONLY0-NEXT:    [[TMP4766:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4766]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6202]]
// SIMD-ONLY0:       if.end6202:
// SIMD-ONLY0-NEXT:    [[TMP4767:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4767]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4768:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4769:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6203:%.*]] = fcmp olt float [[TMP4768]], [[TMP4769]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6203]], label [[IF_THEN6205:%.*]], label [[IF_END6206:%.*]]
// SIMD-ONLY0:       if.then6205:
// SIMD-ONLY0-NEXT:    [[TMP4770:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4770]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6206]]
// SIMD-ONLY0:       if.end6206:
// SIMD-ONLY0-NEXT:    [[TMP4771:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4771]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4772:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4773:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6207:%.*]] = fcmp olt float [[TMP4772]], [[TMP4773]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6207]], label [[IF_THEN6209:%.*]], label [[IF_END6210:%.*]]
// SIMD-ONLY0:       if.then6209:
// SIMD-ONLY0-NEXT:    [[TMP4774:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4774]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6210]]
// SIMD-ONLY0:       if.end6210:
// SIMD-ONLY0-NEXT:    [[TMP4775:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4775]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4776:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4777:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6211:%.*]] = fcmp oeq float [[TMP4776]], [[TMP4777]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6211]], label [[IF_THEN6213:%.*]], label [[IF_END6214:%.*]]
// SIMD-ONLY0:       if.then6213:
// SIMD-ONLY0-NEXT:    [[TMP4778:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4778]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6214]]
// SIMD-ONLY0:       if.end6214:
// SIMD-ONLY0-NEXT:    [[TMP4779:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4779]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4780:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4781:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6215:%.*]] = fcmp oeq float [[TMP4780]], [[TMP4781]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6215]], label [[IF_THEN6217:%.*]], label [[IF_END6218:%.*]]
// SIMD-ONLY0:       if.then6217:
// SIMD-ONLY0-NEXT:    [[TMP4782:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4782]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6218]]
// SIMD-ONLY0:       if.end6218:
// SIMD-ONLY0-NEXT:    [[TMP4783:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4783]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4784:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4785:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6219:%.*]] = fcmp oeq float [[TMP4784]], [[TMP4785]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6219]], label [[IF_THEN6221:%.*]], label [[IF_ELSE6222:%.*]]
// SIMD-ONLY0:       if.then6221:
// SIMD-ONLY0-NEXT:    [[TMP4786:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4786]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6223:%.*]]
// SIMD-ONLY0:       if.else6222:
// SIMD-ONLY0-NEXT:    [[TMP4787:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4787]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6223]]
// SIMD-ONLY0:       if.end6223:
// SIMD-ONLY0-NEXT:    [[TMP4788:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4789:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6224:%.*]] = fcmp oeq float [[TMP4788]], [[TMP4789]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6224]], label [[IF_THEN6226:%.*]], label [[IF_ELSE6227:%.*]]
// SIMD-ONLY0:       if.then6226:
// SIMD-ONLY0-NEXT:    [[TMP4790:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4790]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6228:%.*]]
// SIMD-ONLY0:       if.else6227:
// SIMD-ONLY0-NEXT:    [[TMP4791:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4791]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6228]]
// SIMD-ONLY0:       if.end6228:
// SIMD-ONLY0-NEXT:    [[TMP4792:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4793:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6229:%.*]] = fcmp oeq float [[TMP4792]], [[TMP4793]]
// SIMD-ONLY0-NEXT:    [[CONV6230:%.*]] = zext i1 [[CMP6229]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6230]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4794:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6231:%.*]] = icmp ne i32 [[TMP4794]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6231]], label [[IF_THEN6232:%.*]], label [[IF_END6233:%.*]]
// SIMD-ONLY0:       if.then6232:
// SIMD-ONLY0-NEXT:    [[TMP4795:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4795]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6233]]
// SIMD-ONLY0:       if.end6233:
// SIMD-ONLY0-NEXT:    [[TMP4796:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4797:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6234:%.*]] = fcmp oeq float [[TMP4796]], [[TMP4797]]
// SIMD-ONLY0-NEXT:    [[CONV6235:%.*]] = zext i1 [[CMP6234]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6235]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4798:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6236:%.*]] = icmp ne i32 [[TMP4798]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6236]], label [[IF_THEN6237:%.*]], label [[IF_END6238:%.*]]
// SIMD-ONLY0:       if.then6237:
// SIMD-ONLY0-NEXT:    [[TMP4799:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4799]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6238]]
// SIMD-ONLY0:       if.end6238:
// SIMD-ONLY0-NEXT:    [[TMP4800:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4801:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6239:%.*]] = fcmp oeq float [[TMP4800]], [[TMP4801]]
// SIMD-ONLY0-NEXT:    [[CONV6240:%.*]] = zext i1 [[CMP6239]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6240]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4802:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6241:%.*]] = icmp ne i32 [[TMP4802]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6241]], label [[IF_THEN6242:%.*]], label [[IF_ELSE6243:%.*]]
// SIMD-ONLY0:       if.then6242:
// SIMD-ONLY0-NEXT:    [[TMP4803:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4803]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6244:%.*]]
// SIMD-ONLY0:       if.else6243:
// SIMD-ONLY0-NEXT:    [[TMP4804:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4804]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6244]]
// SIMD-ONLY0:       if.end6244:
// SIMD-ONLY0-NEXT:    [[TMP4805:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4806:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6245:%.*]] = fcmp oeq float [[TMP4805]], [[TMP4806]]
// SIMD-ONLY0-NEXT:    [[CONV6246:%.*]] = zext i1 [[CMP6245]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6246]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4807:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6247:%.*]] = icmp ne i32 [[TMP4807]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6247]], label [[IF_THEN6248:%.*]], label [[IF_ELSE6249:%.*]]
// SIMD-ONLY0:       if.then6248:
// SIMD-ONLY0-NEXT:    [[TMP4808:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4808]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6250:%.*]]
// SIMD-ONLY0:       if.else6249:
// SIMD-ONLY0-NEXT:    [[TMP4809:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4809]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6250]]
// SIMD-ONLY0:       if.end6250:
// SIMD-ONLY0-NEXT:    [[TMP4810:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4810]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4811:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4812:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6251:%.*]] = fcmp ogt float [[TMP4811]], [[TMP4812]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6251]], label [[IF_THEN6253:%.*]], label [[IF_END6254:%.*]]
// SIMD-ONLY0:       if.then6253:
// SIMD-ONLY0-NEXT:    [[TMP4813:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4813]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6254]]
// SIMD-ONLY0:       if.end6254:
// SIMD-ONLY0-NEXT:    [[TMP4814:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4814]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4815:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4816:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6255:%.*]] = fcmp ogt float [[TMP4815]], [[TMP4816]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6255]], label [[IF_THEN6257:%.*]], label [[IF_END6258:%.*]]
// SIMD-ONLY0:       if.then6257:
// SIMD-ONLY0-NEXT:    [[TMP4817:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4817]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6258]]
// SIMD-ONLY0:       if.end6258:
// SIMD-ONLY0-NEXT:    [[TMP4818:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4818]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4819:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4820:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6259:%.*]] = fcmp olt float [[TMP4819]], [[TMP4820]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6259]], label [[IF_THEN6261:%.*]], label [[IF_END6262:%.*]]
// SIMD-ONLY0:       if.then6261:
// SIMD-ONLY0-NEXT:    [[TMP4821:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4821]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6262]]
// SIMD-ONLY0:       if.end6262:
// SIMD-ONLY0-NEXT:    [[TMP4822:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4822]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4823:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4824:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6263:%.*]] = fcmp olt float [[TMP4823]], [[TMP4824]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6263]], label [[IF_THEN6265:%.*]], label [[IF_END6266:%.*]]
// SIMD-ONLY0:       if.then6265:
// SIMD-ONLY0-NEXT:    [[TMP4825:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4825]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6266]]
// SIMD-ONLY0:       if.end6266:
// SIMD-ONLY0-NEXT:    [[TMP4826:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4826]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4827:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4828:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6267:%.*]] = fcmp oeq float [[TMP4827]], [[TMP4828]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6267]], label [[IF_THEN6269:%.*]], label [[IF_END6270:%.*]]
// SIMD-ONLY0:       if.then6269:
// SIMD-ONLY0-NEXT:    [[TMP4829:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4829]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6270]]
// SIMD-ONLY0:       if.end6270:
// SIMD-ONLY0-NEXT:    [[TMP4830:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4830]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4831:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4832:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6271:%.*]] = fcmp oeq float [[TMP4831]], [[TMP4832]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6271]], label [[IF_THEN6273:%.*]], label [[IF_END6274:%.*]]
// SIMD-ONLY0:       if.then6273:
// SIMD-ONLY0-NEXT:    [[TMP4833:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4833]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6274]]
// SIMD-ONLY0:       if.end6274:
// SIMD-ONLY0-NEXT:    [[TMP4834:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4835:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6275:%.*]] = fcmp ogt float [[TMP4834]], [[TMP4835]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6275]], label [[IF_THEN6277:%.*]], label [[IF_END6278:%.*]]
// SIMD-ONLY0:       if.then6277:
// SIMD-ONLY0-NEXT:    [[TMP4836:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4836]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6278]]
// SIMD-ONLY0:       if.end6278:
// SIMD-ONLY0-NEXT:    [[TMP4837:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4837]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4838:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4839:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6279:%.*]] = fcmp ogt float [[TMP4838]], [[TMP4839]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6279]], label [[IF_THEN6281:%.*]], label [[IF_END6282:%.*]]
// SIMD-ONLY0:       if.then6281:
// SIMD-ONLY0-NEXT:    [[TMP4840:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4840]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6282]]
// SIMD-ONLY0:       if.end6282:
// SIMD-ONLY0-NEXT:    [[TMP4841:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4841]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4842:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4843:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6283:%.*]] = fcmp olt float [[TMP4842]], [[TMP4843]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6283]], label [[IF_THEN6285:%.*]], label [[IF_END6286:%.*]]
// SIMD-ONLY0:       if.then6285:
// SIMD-ONLY0-NEXT:    [[TMP4844:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4844]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6286]]
// SIMD-ONLY0:       if.end6286:
// SIMD-ONLY0-NEXT:    [[TMP4845:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4845]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4846:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4847:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6287:%.*]] = fcmp olt float [[TMP4846]], [[TMP4847]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6287]], label [[IF_THEN6289:%.*]], label [[IF_END6290:%.*]]
// SIMD-ONLY0:       if.then6289:
// SIMD-ONLY0-NEXT:    [[TMP4848:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4848]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6290]]
// SIMD-ONLY0:       if.end6290:
// SIMD-ONLY0-NEXT:    [[TMP4849:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4849]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4850:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4851:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6291:%.*]] = fcmp oeq float [[TMP4850]], [[TMP4851]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6291]], label [[IF_THEN6293:%.*]], label [[IF_END6294:%.*]]
// SIMD-ONLY0:       if.then6293:
// SIMD-ONLY0-NEXT:    [[TMP4852:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4852]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6294]]
// SIMD-ONLY0:       if.end6294:
// SIMD-ONLY0-NEXT:    [[TMP4853:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4853]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4854:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4855:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6295:%.*]] = fcmp oeq float [[TMP4854]], [[TMP4855]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6295]], label [[IF_THEN6297:%.*]], label [[IF_END6298:%.*]]
// SIMD-ONLY0:       if.then6297:
// SIMD-ONLY0-NEXT:    [[TMP4856:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4856]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6298]]
// SIMD-ONLY0:       if.end6298:
// SIMD-ONLY0-NEXT:    [[TMP4857:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4857]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4858:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4859:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6299:%.*]] = fcmp oeq float [[TMP4858]], [[TMP4859]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6299]], label [[IF_THEN6301:%.*]], label [[IF_ELSE6302:%.*]]
// SIMD-ONLY0:       if.then6301:
// SIMD-ONLY0-NEXT:    [[TMP4860:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4860]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6303:%.*]]
// SIMD-ONLY0:       if.else6302:
// SIMD-ONLY0-NEXT:    [[TMP4861:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4861]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6303]]
// SIMD-ONLY0:       if.end6303:
// SIMD-ONLY0-NEXT:    [[TMP4862:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4863:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6304:%.*]] = fcmp oeq float [[TMP4862]], [[TMP4863]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6304]], label [[IF_THEN6306:%.*]], label [[IF_ELSE6307:%.*]]
// SIMD-ONLY0:       if.then6306:
// SIMD-ONLY0-NEXT:    [[TMP4864:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4864]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6308:%.*]]
// SIMD-ONLY0:       if.else6307:
// SIMD-ONLY0-NEXT:    [[TMP4865:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4865]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6308]]
// SIMD-ONLY0:       if.end6308:
// SIMD-ONLY0-NEXT:    [[TMP4866:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4867:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6309:%.*]] = fcmp oeq float [[TMP4866]], [[TMP4867]]
// SIMD-ONLY0-NEXT:    [[CONV6310:%.*]] = zext i1 [[CMP6309]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6310]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4868:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6311:%.*]] = icmp ne i32 [[TMP4868]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6311]], label [[IF_THEN6312:%.*]], label [[IF_END6313:%.*]]
// SIMD-ONLY0:       if.then6312:
// SIMD-ONLY0-NEXT:    [[TMP4869:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4869]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6313]]
// SIMD-ONLY0:       if.end6313:
// SIMD-ONLY0-NEXT:    [[TMP4870:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4871:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6314:%.*]] = fcmp oeq float [[TMP4870]], [[TMP4871]]
// SIMD-ONLY0-NEXT:    [[CONV6315:%.*]] = zext i1 [[CMP6314]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6315]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4872:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6316:%.*]] = icmp ne i32 [[TMP4872]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6316]], label [[IF_THEN6317:%.*]], label [[IF_END6318:%.*]]
// SIMD-ONLY0:       if.then6317:
// SIMD-ONLY0-NEXT:    [[TMP4873:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4873]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6318]]
// SIMD-ONLY0:       if.end6318:
// SIMD-ONLY0-NEXT:    [[TMP4874:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4875:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6319:%.*]] = fcmp oeq float [[TMP4874]], [[TMP4875]]
// SIMD-ONLY0-NEXT:    [[CONV6320:%.*]] = zext i1 [[CMP6319]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6320]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4876:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6321:%.*]] = icmp ne i32 [[TMP4876]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6321]], label [[IF_THEN6322:%.*]], label [[IF_ELSE6323:%.*]]
// SIMD-ONLY0:       if.then6322:
// SIMD-ONLY0-NEXT:    [[TMP4877:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4877]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6324:%.*]]
// SIMD-ONLY0:       if.else6323:
// SIMD-ONLY0-NEXT:    [[TMP4878:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4878]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6324]]
// SIMD-ONLY0:       if.end6324:
// SIMD-ONLY0-NEXT:    [[TMP4879:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4880:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6325:%.*]] = fcmp oeq float [[TMP4879]], [[TMP4880]]
// SIMD-ONLY0-NEXT:    [[CONV6326:%.*]] = zext i1 [[CMP6325]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6326]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4881:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6327:%.*]] = icmp ne i32 [[TMP4881]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6327]], label [[IF_THEN6328:%.*]], label [[IF_ELSE6329:%.*]]
// SIMD-ONLY0:       if.then6328:
// SIMD-ONLY0-NEXT:    [[TMP4882:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4882]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6330:%.*]]
// SIMD-ONLY0:       if.else6329:
// SIMD-ONLY0-NEXT:    [[TMP4883:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP4883]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    br label [[IF_END6330]]
// SIMD-ONLY0:       if.end6330:
// SIMD-ONLY0-NEXT:    [[TMP4884:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4884]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4885:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4886:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6331:%.*]] = fcmp ogt double [[TMP4885]], [[TMP4886]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6331]], label [[IF_THEN6333:%.*]], label [[IF_END6334:%.*]]
// SIMD-ONLY0:       if.then6333:
// SIMD-ONLY0-NEXT:    [[TMP4887:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4887]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6334]]
// SIMD-ONLY0:       if.end6334:
// SIMD-ONLY0-NEXT:    [[TMP4888:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4888]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4889:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4890:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6335:%.*]] = fcmp ogt double [[TMP4889]], [[TMP4890]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6335]], label [[IF_THEN6337:%.*]], label [[IF_END6338:%.*]]
// SIMD-ONLY0:       if.then6337:
// SIMD-ONLY0-NEXT:    [[TMP4891:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4891]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6338]]
// SIMD-ONLY0:       if.end6338:
// SIMD-ONLY0-NEXT:    [[TMP4892:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4892]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4893:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4894:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6339:%.*]] = fcmp olt double [[TMP4893]], [[TMP4894]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6339]], label [[IF_THEN6341:%.*]], label [[IF_END6342:%.*]]
// SIMD-ONLY0:       if.then6341:
// SIMD-ONLY0-NEXT:    [[TMP4895:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4895]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6342]]
// SIMD-ONLY0:       if.end6342:
// SIMD-ONLY0-NEXT:    [[TMP4896:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4896]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4897:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4898:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6343:%.*]] = fcmp olt double [[TMP4897]], [[TMP4898]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6343]], label [[IF_THEN6345:%.*]], label [[IF_END6346:%.*]]
// SIMD-ONLY0:       if.then6345:
// SIMD-ONLY0-NEXT:    [[TMP4899:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4899]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6346]]
// SIMD-ONLY0:       if.end6346:
// SIMD-ONLY0-NEXT:    [[TMP4900:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4900]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4901:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4902:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6347:%.*]] = fcmp oeq double [[TMP4901]], [[TMP4902]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6347]], label [[IF_THEN6349:%.*]], label [[IF_END6350:%.*]]
// SIMD-ONLY0:       if.then6349:
// SIMD-ONLY0-NEXT:    [[TMP4903:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4903]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6350]]
// SIMD-ONLY0:       if.end6350:
// SIMD-ONLY0-NEXT:    [[TMP4904:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4904]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4905:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4906:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6351:%.*]] = fcmp oeq double [[TMP4905]], [[TMP4906]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6351]], label [[IF_THEN6353:%.*]], label [[IF_END6354:%.*]]
// SIMD-ONLY0:       if.then6353:
// SIMD-ONLY0-NEXT:    [[TMP4907:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4907]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6354]]
// SIMD-ONLY0:       if.end6354:
// SIMD-ONLY0-NEXT:    [[TMP4908:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4909:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6355:%.*]] = fcmp ogt double [[TMP4908]], [[TMP4909]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6355]], label [[IF_THEN6357:%.*]], label [[IF_END6358:%.*]]
// SIMD-ONLY0:       if.then6357:
// SIMD-ONLY0-NEXT:    [[TMP4910:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4910]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6358]]
// SIMD-ONLY0:       if.end6358:
// SIMD-ONLY0-NEXT:    [[TMP4911:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4911]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4912:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4913:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6359:%.*]] = fcmp ogt double [[TMP4912]], [[TMP4913]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6359]], label [[IF_THEN6361:%.*]], label [[IF_END6362:%.*]]
// SIMD-ONLY0:       if.then6361:
// SIMD-ONLY0-NEXT:    [[TMP4914:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4914]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6362]]
// SIMD-ONLY0:       if.end6362:
// SIMD-ONLY0-NEXT:    [[TMP4915:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4915]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4916:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4917:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6363:%.*]] = fcmp olt double [[TMP4916]], [[TMP4917]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6363]], label [[IF_THEN6365:%.*]], label [[IF_END6366:%.*]]
// SIMD-ONLY0:       if.then6365:
// SIMD-ONLY0-NEXT:    [[TMP4918:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4918]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6366]]
// SIMD-ONLY0:       if.end6366:
// SIMD-ONLY0-NEXT:    [[TMP4919:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4919]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4920:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4921:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6367:%.*]] = fcmp olt double [[TMP4920]], [[TMP4921]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6367]], label [[IF_THEN6369:%.*]], label [[IF_END6370:%.*]]
// SIMD-ONLY0:       if.then6369:
// SIMD-ONLY0-NEXT:    [[TMP4922:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4922]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6370]]
// SIMD-ONLY0:       if.end6370:
// SIMD-ONLY0-NEXT:    [[TMP4923:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4923]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4924:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4925:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6371:%.*]] = fcmp oeq double [[TMP4924]], [[TMP4925]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6371]], label [[IF_THEN6373:%.*]], label [[IF_END6374:%.*]]
// SIMD-ONLY0:       if.then6373:
// SIMD-ONLY0-NEXT:    [[TMP4926:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4926]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6374]]
// SIMD-ONLY0:       if.end6374:
// SIMD-ONLY0-NEXT:    [[TMP4927:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4927]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4928:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4929:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6375:%.*]] = fcmp oeq double [[TMP4928]], [[TMP4929]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6375]], label [[IF_THEN6377:%.*]], label [[IF_END6378:%.*]]
// SIMD-ONLY0:       if.then6377:
// SIMD-ONLY0-NEXT:    [[TMP4930:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4930]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6378]]
// SIMD-ONLY0:       if.end6378:
// SIMD-ONLY0-NEXT:    [[TMP4931:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4931]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4932:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4933:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6379:%.*]] = fcmp oeq double [[TMP4932]], [[TMP4933]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6379]], label [[IF_THEN6381:%.*]], label [[IF_ELSE6382:%.*]]
// SIMD-ONLY0:       if.then6381:
// SIMD-ONLY0-NEXT:    [[TMP4934:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4934]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6383:%.*]]
// SIMD-ONLY0:       if.else6382:
// SIMD-ONLY0-NEXT:    [[TMP4935:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4935]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6383]]
// SIMD-ONLY0:       if.end6383:
// SIMD-ONLY0-NEXT:    [[TMP4936:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4937:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6384:%.*]] = fcmp oeq double [[TMP4936]], [[TMP4937]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6384]], label [[IF_THEN6386:%.*]], label [[IF_ELSE6387:%.*]]
// SIMD-ONLY0:       if.then6386:
// SIMD-ONLY0-NEXT:    [[TMP4938:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4938]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6388:%.*]]
// SIMD-ONLY0:       if.else6387:
// SIMD-ONLY0-NEXT:    [[TMP4939:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4939]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6388]]
// SIMD-ONLY0:       if.end6388:
// SIMD-ONLY0-NEXT:    [[TMP4940:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4941:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6389:%.*]] = fcmp oeq double [[TMP4940]], [[TMP4941]]
// SIMD-ONLY0-NEXT:    [[CONV6390:%.*]] = zext i1 [[CMP6389]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6390]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4942:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6391:%.*]] = icmp ne i32 [[TMP4942]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6391]], label [[IF_THEN6392:%.*]], label [[IF_END6393:%.*]]
// SIMD-ONLY0:       if.then6392:
// SIMD-ONLY0-NEXT:    [[TMP4943:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4943]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6393]]
// SIMD-ONLY0:       if.end6393:
// SIMD-ONLY0-NEXT:    [[TMP4944:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4945:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6394:%.*]] = fcmp oeq double [[TMP4944]], [[TMP4945]]
// SIMD-ONLY0-NEXT:    [[CONV6395:%.*]] = zext i1 [[CMP6394]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6395]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4946:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6396:%.*]] = icmp ne i32 [[TMP4946]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6396]], label [[IF_THEN6397:%.*]], label [[IF_END6398:%.*]]
// SIMD-ONLY0:       if.then6397:
// SIMD-ONLY0-NEXT:    [[TMP4947:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4947]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6398]]
// SIMD-ONLY0:       if.end6398:
// SIMD-ONLY0-NEXT:    [[TMP4948:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4949:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6399:%.*]] = fcmp oeq double [[TMP4948]], [[TMP4949]]
// SIMD-ONLY0-NEXT:    [[CONV6400:%.*]] = zext i1 [[CMP6399]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6400]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4950:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6401:%.*]] = icmp ne i32 [[TMP4950]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6401]], label [[IF_THEN6402:%.*]], label [[IF_ELSE6403:%.*]]
// SIMD-ONLY0:       if.then6402:
// SIMD-ONLY0-NEXT:    [[TMP4951:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4951]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6404:%.*]]
// SIMD-ONLY0:       if.else6403:
// SIMD-ONLY0-NEXT:    [[TMP4952:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4952]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6404]]
// SIMD-ONLY0:       if.end6404:
// SIMD-ONLY0-NEXT:    [[TMP4953:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4954:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6405:%.*]] = fcmp oeq double [[TMP4953]], [[TMP4954]]
// SIMD-ONLY0-NEXT:    [[CONV6406:%.*]] = zext i1 [[CMP6405]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6406]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP4955:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6407:%.*]] = icmp ne i32 [[TMP4955]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6407]], label [[IF_THEN6408:%.*]], label [[IF_ELSE6409:%.*]]
// SIMD-ONLY0:       if.then6408:
// SIMD-ONLY0-NEXT:    [[TMP4956:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4956]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6410:%.*]]
// SIMD-ONLY0:       if.else6409:
// SIMD-ONLY0-NEXT:    [[TMP4957:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4957]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6410]]
// SIMD-ONLY0:       if.end6410:
// SIMD-ONLY0-NEXT:    [[TMP4958:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4958]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4959:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4960:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6411:%.*]] = fcmp ogt double [[TMP4959]], [[TMP4960]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6411]], label [[IF_THEN6413:%.*]], label [[IF_END6414:%.*]]
// SIMD-ONLY0:       if.then6413:
// SIMD-ONLY0-NEXT:    [[TMP4961:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4961]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6414]]
// SIMD-ONLY0:       if.end6414:
// SIMD-ONLY0-NEXT:    [[TMP4962:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4962]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4963:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4964:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6415:%.*]] = fcmp ogt double [[TMP4963]], [[TMP4964]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6415]], label [[IF_THEN6417:%.*]], label [[IF_END6418:%.*]]
// SIMD-ONLY0:       if.then6417:
// SIMD-ONLY0-NEXT:    [[TMP4965:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4965]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6418]]
// SIMD-ONLY0:       if.end6418:
// SIMD-ONLY0-NEXT:    [[TMP4966:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4966]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4967:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4968:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6419:%.*]] = fcmp olt double [[TMP4967]], [[TMP4968]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6419]], label [[IF_THEN6421:%.*]], label [[IF_END6422:%.*]]
// SIMD-ONLY0:       if.then6421:
// SIMD-ONLY0-NEXT:    [[TMP4969:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4969]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6422]]
// SIMD-ONLY0:       if.end6422:
// SIMD-ONLY0-NEXT:    [[TMP4970:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4970]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4971:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4972:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6423:%.*]] = fcmp olt double [[TMP4971]], [[TMP4972]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6423]], label [[IF_THEN6425:%.*]], label [[IF_END6426:%.*]]
// SIMD-ONLY0:       if.then6425:
// SIMD-ONLY0-NEXT:    [[TMP4973:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4973]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6426]]
// SIMD-ONLY0:       if.end6426:
// SIMD-ONLY0-NEXT:    [[TMP4974:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4974]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4975:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4976:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6427:%.*]] = fcmp oeq double [[TMP4975]], [[TMP4976]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6427]], label [[IF_THEN6429:%.*]], label [[IF_END6430:%.*]]
// SIMD-ONLY0:       if.then6429:
// SIMD-ONLY0-NEXT:    [[TMP4977:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4977]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6430]]
// SIMD-ONLY0:       if.end6430:
// SIMD-ONLY0-NEXT:    [[TMP4978:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4978]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4979:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4980:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6431:%.*]] = fcmp oeq double [[TMP4979]], [[TMP4980]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6431]], label [[IF_THEN6433:%.*]], label [[IF_END6434:%.*]]
// SIMD-ONLY0:       if.then6433:
// SIMD-ONLY0-NEXT:    [[TMP4981:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4981]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6434]]
// SIMD-ONLY0:       if.end6434:
// SIMD-ONLY0-NEXT:    [[TMP4982:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4983:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6435:%.*]] = fcmp ogt double [[TMP4982]], [[TMP4983]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6435]], label [[IF_THEN6437:%.*]], label [[IF_END6438:%.*]]
// SIMD-ONLY0:       if.then6437:
// SIMD-ONLY0-NEXT:    [[TMP4984:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4984]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6438]]
// SIMD-ONLY0:       if.end6438:
// SIMD-ONLY0-NEXT:    [[TMP4985:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4985]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4986:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4987:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6439:%.*]] = fcmp ogt double [[TMP4986]], [[TMP4987]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6439]], label [[IF_THEN6441:%.*]], label [[IF_END6442:%.*]]
// SIMD-ONLY0:       if.then6441:
// SIMD-ONLY0-NEXT:    [[TMP4988:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4988]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6442]]
// SIMD-ONLY0:       if.end6442:
// SIMD-ONLY0-NEXT:    [[TMP4989:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4989]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4990:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4991:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6443:%.*]] = fcmp olt double [[TMP4990]], [[TMP4991]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6443]], label [[IF_THEN6445:%.*]], label [[IF_END6446:%.*]]
// SIMD-ONLY0:       if.then6445:
// SIMD-ONLY0-NEXT:    [[TMP4992:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4992]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6446]]
// SIMD-ONLY0:       if.end6446:
// SIMD-ONLY0-NEXT:    [[TMP4993:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4993]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4994:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4995:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6447:%.*]] = fcmp olt double [[TMP4994]], [[TMP4995]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6447]], label [[IF_THEN6449:%.*]], label [[IF_END6450:%.*]]
// SIMD-ONLY0:       if.then6449:
// SIMD-ONLY0-NEXT:    [[TMP4996:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4996]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6450]]
// SIMD-ONLY0:       if.end6450:
// SIMD-ONLY0-NEXT:    [[TMP4997:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP4997]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4998:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP4999:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6451:%.*]] = fcmp oeq double [[TMP4998]], [[TMP4999]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6451]], label [[IF_THEN6453:%.*]], label [[IF_END6454:%.*]]
// SIMD-ONLY0:       if.then6453:
// SIMD-ONLY0-NEXT:    [[TMP5000:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5000]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6454]]
// SIMD-ONLY0:       if.end6454:
// SIMD-ONLY0-NEXT:    [[TMP5001:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5001]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5002:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5003:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6455:%.*]] = fcmp oeq double [[TMP5002]], [[TMP5003]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6455]], label [[IF_THEN6457:%.*]], label [[IF_END6458:%.*]]
// SIMD-ONLY0:       if.then6457:
// SIMD-ONLY0-NEXT:    [[TMP5004:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5004]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6458]]
// SIMD-ONLY0:       if.end6458:
// SIMD-ONLY0-NEXT:    [[TMP5005:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5005]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5006:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5007:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6459:%.*]] = fcmp oeq double [[TMP5006]], [[TMP5007]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6459]], label [[IF_THEN6461:%.*]], label [[IF_ELSE6462:%.*]]
// SIMD-ONLY0:       if.then6461:
// SIMD-ONLY0-NEXT:    [[TMP5008:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5008]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6463:%.*]]
// SIMD-ONLY0:       if.else6462:
// SIMD-ONLY0-NEXT:    [[TMP5009:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5009]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6463]]
// SIMD-ONLY0:       if.end6463:
// SIMD-ONLY0-NEXT:    [[TMP5010:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5011:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6464:%.*]] = fcmp oeq double [[TMP5010]], [[TMP5011]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6464]], label [[IF_THEN6466:%.*]], label [[IF_ELSE6467:%.*]]
// SIMD-ONLY0:       if.then6466:
// SIMD-ONLY0-NEXT:    [[TMP5012:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5012]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6468:%.*]]
// SIMD-ONLY0:       if.else6467:
// SIMD-ONLY0-NEXT:    [[TMP5013:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5013]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6468]]
// SIMD-ONLY0:       if.end6468:
// SIMD-ONLY0-NEXT:    [[TMP5014:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5015:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6469:%.*]] = fcmp oeq double [[TMP5014]], [[TMP5015]]
// SIMD-ONLY0-NEXT:    [[CONV6470:%.*]] = zext i1 [[CMP6469]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6470]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5016:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6471:%.*]] = icmp ne i32 [[TMP5016]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6471]], label [[IF_THEN6472:%.*]], label [[IF_END6473:%.*]]
// SIMD-ONLY0:       if.then6472:
// SIMD-ONLY0-NEXT:    [[TMP5017:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5017]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6473]]
// SIMD-ONLY0:       if.end6473:
// SIMD-ONLY0-NEXT:    [[TMP5018:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5019:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6474:%.*]] = fcmp oeq double [[TMP5018]], [[TMP5019]]
// SIMD-ONLY0-NEXT:    [[CONV6475:%.*]] = zext i1 [[CMP6474]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6475]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5020:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6476:%.*]] = icmp ne i32 [[TMP5020]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6476]], label [[IF_THEN6477:%.*]], label [[IF_END6478:%.*]]
// SIMD-ONLY0:       if.then6477:
// SIMD-ONLY0-NEXT:    [[TMP5021:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5021]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6478]]
// SIMD-ONLY0:       if.end6478:
// SIMD-ONLY0-NEXT:    [[TMP5022:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5023:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6479:%.*]] = fcmp oeq double [[TMP5022]], [[TMP5023]]
// SIMD-ONLY0-NEXT:    [[CONV6480:%.*]] = zext i1 [[CMP6479]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6480]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5024:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6481:%.*]] = icmp ne i32 [[TMP5024]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6481]], label [[IF_THEN6482:%.*]], label [[IF_ELSE6483:%.*]]
// SIMD-ONLY0:       if.then6482:
// SIMD-ONLY0-NEXT:    [[TMP5025:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5025]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6484:%.*]]
// SIMD-ONLY0:       if.else6483:
// SIMD-ONLY0-NEXT:    [[TMP5026:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5026]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6484]]
// SIMD-ONLY0:       if.end6484:
// SIMD-ONLY0-NEXT:    [[TMP5027:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5028:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6485:%.*]] = fcmp oeq double [[TMP5027]], [[TMP5028]]
// SIMD-ONLY0-NEXT:    [[CONV6486:%.*]] = zext i1 [[CMP6485]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6486]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5029:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6487:%.*]] = icmp ne i32 [[TMP5029]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6487]], label [[IF_THEN6488:%.*]], label [[IF_ELSE6489:%.*]]
// SIMD-ONLY0:       if.then6488:
// SIMD-ONLY0-NEXT:    [[TMP5030:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5030]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6490:%.*]]
// SIMD-ONLY0:       if.else6489:
// SIMD-ONLY0-NEXT:    [[TMP5031:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5031]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6490]]
// SIMD-ONLY0:       if.end6490:
// SIMD-ONLY0-NEXT:    [[TMP5032:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5032]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5033:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5034:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6491:%.*]] = fcmp ogt double [[TMP5033]], [[TMP5034]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6491]], label [[IF_THEN6493:%.*]], label [[IF_END6494:%.*]]
// SIMD-ONLY0:       if.then6493:
// SIMD-ONLY0-NEXT:    [[TMP5035:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5035]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6494]]
// SIMD-ONLY0:       if.end6494:
// SIMD-ONLY0-NEXT:    [[TMP5036:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5036]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5037:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5038:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6495:%.*]] = fcmp ogt double [[TMP5037]], [[TMP5038]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6495]], label [[IF_THEN6497:%.*]], label [[IF_END6498:%.*]]
// SIMD-ONLY0:       if.then6497:
// SIMD-ONLY0-NEXT:    [[TMP5039:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5039]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6498]]
// SIMD-ONLY0:       if.end6498:
// SIMD-ONLY0-NEXT:    [[TMP5040:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5040]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5041:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5042:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6499:%.*]] = fcmp olt double [[TMP5041]], [[TMP5042]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6499]], label [[IF_THEN6501:%.*]], label [[IF_END6502:%.*]]
// SIMD-ONLY0:       if.then6501:
// SIMD-ONLY0-NEXT:    [[TMP5043:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5043]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6502]]
// SIMD-ONLY0:       if.end6502:
// SIMD-ONLY0-NEXT:    [[TMP5044:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5044]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5045:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5046:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6503:%.*]] = fcmp olt double [[TMP5045]], [[TMP5046]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6503]], label [[IF_THEN6505:%.*]], label [[IF_END6506:%.*]]
// SIMD-ONLY0:       if.then6505:
// SIMD-ONLY0-NEXT:    [[TMP5047:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5047]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6506]]
// SIMD-ONLY0:       if.end6506:
// SIMD-ONLY0-NEXT:    [[TMP5048:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5048]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5049:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5050:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6507:%.*]] = fcmp oeq double [[TMP5049]], [[TMP5050]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6507]], label [[IF_THEN6509:%.*]], label [[IF_END6510:%.*]]
// SIMD-ONLY0:       if.then6509:
// SIMD-ONLY0-NEXT:    [[TMP5051:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5051]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6510]]
// SIMD-ONLY0:       if.end6510:
// SIMD-ONLY0-NEXT:    [[TMP5052:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5052]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5053:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5054:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6511:%.*]] = fcmp oeq double [[TMP5053]], [[TMP5054]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6511]], label [[IF_THEN6513:%.*]], label [[IF_END6514:%.*]]
// SIMD-ONLY0:       if.then6513:
// SIMD-ONLY0-NEXT:    [[TMP5055:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5055]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6514]]
// SIMD-ONLY0:       if.end6514:
// SIMD-ONLY0-NEXT:    [[TMP5056:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5057:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6515:%.*]] = fcmp ogt double [[TMP5056]], [[TMP5057]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6515]], label [[IF_THEN6517:%.*]], label [[IF_END6518:%.*]]
// SIMD-ONLY0:       if.then6517:
// SIMD-ONLY0-NEXT:    [[TMP5058:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5058]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6518]]
// SIMD-ONLY0:       if.end6518:
// SIMD-ONLY0-NEXT:    [[TMP5059:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5059]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5060:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5061:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6519:%.*]] = fcmp ogt double [[TMP5060]], [[TMP5061]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6519]], label [[IF_THEN6521:%.*]], label [[IF_END6522:%.*]]
// SIMD-ONLY0:       if.then6521:
// SIMD-ONLY0-NEXT:    [[TMP5062:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5062]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6522]]
// SIMD-ONLY0:       if.end6522:
// SIMD-ONLY0-NEXT:    [[TMP5063:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5063]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5064:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5065:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6523:%.*]] = fcmp olt double [[TMP5064]], [[TMP5065]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6523]], label [[IF_THEN6525:%.*]], label [[IF_END6526:%.*]]
// SIMD-ONLY0:       if.then6525:
// SIMD-ONLY0-NEXT:    [[TMP5066:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5066]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6526]]
// SIMD-ONLY0:       if.end6526:
// SIMD-ONLY0-NEXT:    [[TMP5067:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5067]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5068:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5069:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6527:%.*]] = fcmp olt double [[TMP5068]], [[TMP5069]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6527]], label [[IF_THEN6529:%.*]], label [[IF_END6530:%.*]]
// SIMD-ONLY0:       if.then6529:
// SIMD-ONLY0-NEXT:    [[TMP5070:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5070]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6530]]
// SIMD-ONLY0:       if.end6530:
// SIMD-ONLY0-NEXT:    [[TMP5071:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5071]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5072:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5073:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6531:%.*]] = fcmp oeq double [[TMP5072]], [[TMP5073]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6531]], label [[IF_THEN6533:%.*]], label [[IF_END6534:%.*]]
// SIMD-ONLY0:       if.then6533:
// SIMD-ONLY0-NEXT:    [[TMP5074:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5074]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6534]]
// SIMD-ONLY0:       if.end6534:
// SIMD-ONLY0-NEXT:    [[TMP5075:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5075]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5076:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5077:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6535:%.*]] = fcmp oeq double [[TMP5076]], [[TMP5077]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6535]], label [[IF_THEN6537:%.*]], label [[IF_END6538:%.*]]
// SIMD-ONLY0:       if.then6537:
// SIMD-ONLY0-NEXT:    [[TMP5078:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5078]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6538]]
// SIMD-ONLY0:       if.end6538:
// SIMD-ONLY0-NEXT:    [[TMP5079:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5079]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5080:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5081:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6539:%.*]] = fcmp oeq double [[TMP5080]], [[TMP5081]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6539]], label [[IF_THEN6541:%.*]], label [[IF_ELSE6542:%.*]]
// SIMD-ONLY0:       if.then6541:
// SIMD-ONLY0-NEXT:    [[TMP5082:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5082]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6543:%.*]]
// SIMD-ONLY0:       if.else6542:
// SIMD-ONLY0-NEXT:    [[TMP5083:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5083]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6543]]
// SIMD-ONLY0:       if.end6543:
// SIMD-ONLY0-NEXT:    [[TMP5084:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5085:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6544:%.*]] = fcmp oeq double [[TMP5084]], [[TMP5085]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6544]], label [[IF_THEN6546:%.*]], label [[IF_ELSE6547:%.*]]
// SIMD-ONLY0:       if.then6546:
// SIMD-ONLY0-NEXT:    [[TMP5086:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5086]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6548:%.*]]
// SIMD-ONLY0:       if.else6547:
// SIMD-ONLY0-NEXT:    [[TMP5087:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5087]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6548]]
// SIMD-ONLY0:       if.end6548:
// SIMD-ONLY0-NEXT:    [[TMP5088:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5089:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6549:%.*]] = fcmp oeq double [[TMP5088]], [[TMP5089]]
// SIMD-ONLY0-NEXT:    [[CONV6550:%.*]] = zext i1 [[CMP6549]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6550]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5090:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6551:%.*]] = icmp ne i32 [[TMP5090]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6551]], label [[IF_THEN6552:%.*]], label [[IF_END6553:%.*]]
// SIMD-ONLY0:       if.then6552:
// SIMD-ONLY0-NEXT:    [[TMP5091:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5091]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6553]]
// SIMD-ONLY0:       if.end6553:
// SIMD-ONLY0-NEXT:    [[TMP5092:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5093:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6554:%.*]] = fcmp oeq double [[TMP5092]], [[TMP5093]]
// SIMD-ONLY0-NEXT:    [[CONV6555:%.*]] = zext i1 [[CMP6554]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6555]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5094:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6556:%.*]] = icmp ne i32 [[TMP5094]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6556]], label [[IF_THEN6557:%.*]], label [[IF_END6558:%.*]]
// SIMD-ONLY0:       if.then6557:
// SIMD-ONLY0-NEXT:    [[TMP5095:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5095]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6558]]
// SIMD-ONLY0:       if.end6558:
// SIMD-ONLY0-NEXT:    [[TMP5096:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5097:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6559:%.*]] = fcmp oeq double [[TMP5096]], [[TMP5097]]
// SIMD-ONLY0-NEXT:    [[CONV6560:%.*]] = zext i1 [[CMP6559]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6560]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5098:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6561:%.*]] = icmp ne i32 [[TMP5098]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6561]], label [[IF_THEN6562:%.*]], label [[IF_ELSE6563:%.*]]
// SIMD-ONLY0:       if.then6562:
// SIMD-ONLY0-NEXT:    [[TMP5099:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5099]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6564:%.*]]
// SIMD-ONLY0:       if.else6563:
// SIMD-ONLY0-NEXT:    [[TMP5100:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5100]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6564]]
// SIMD-ONLY0:       if.end6564:
// SIMD-ONLY0-NEXT:    [[TMP5101:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5102:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6565:%.*]] = fcmp oeq double [[TMP5101]], [[TMP5102]]
// SIMD-ONLY0-NEXT:    [[CONV6566:%.*]] = zext i1 [[CMP6565]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6566]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5103:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6567:%.*]] = icmp ne i32 [[TMP5103]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6567]], label [[IF_THEN6568:%.*]], label [[IF_ELSE6569:%.*]]
// SIMD-ONLY0:       if.then6568:
// SIMD-ONLY0-NEXT:    [[TMP5104:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5104]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6570:%.*]]
// SIMD-ONLY0:       if.else6569:
// SIMD-ONLY0-NEXT:    [[TMP5105:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5105]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6570]]
// SIMD-ONLY0:       if.end6570:
// SIMD-ONLY0-NEXT:    [[TMP5106:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5106]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5107:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5108:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6571:%.*]] = fcmp ogt double [[TMP5107]], [[TMP5108]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6571]], label [[IF_THEN6573:%.*]], label [[IF_END6574:%.*]]
// SIMD-ONLY0:       if.then6573:
// SIMD-ONLY0-NEXT:    [[TMP5109:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5109]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6574]]
// SIMD-ONLY0:       if.end6574:
// SIMD-ONLY0-NEXT:    [[TMP5110:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5110]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5111:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5112:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6575:%.*]] = fcmp ogt double [[TMP5111]], [[TMP5112]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6575]], label [[IF_THEN6577:%.*]], label [[IF_END6578:%.*]]
// SIMD-ONLY0:       if.then6577:
// SIMD-ONLY0-NEXT:    [[TMP5113:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5113]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6578]]
// SIMD-ONLY0:       if.end6578:
// SIMD-ONLY0-NEXT:    [[TMP5114:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5114]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5115:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5116:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6579:%.*]] = fcmp olt double [[TMP5115]], [[TMP5116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6579]], label [[IF_THEN6581:%.*]], label [[IF_END6582:%.*]]
// SIMD-ONLY0:       if.then6581:
// SIMD-ONLY0-NEXT:    [[TMP5117:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5117]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6582]]
// SIMD-ONLY0:       if.end6582:
// SIMD-ONLY0-NEXT:    [[TMP5118:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5118]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5119:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5120:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6583:%.*]] = fcmp olt double [[TMP5119]], [[TMP5120]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6583]], label [[IF_THEN6585:%.*]], label [[IF_END6586:%.*]]
// SIMD-ONLY0:       if.then6585:
// SIMD-ONLY0-NEXT:    [[TMP5121:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5121]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6586]]
// SIMD-ONLY0:       if.end6586:
// SIMD-ONLY0-NEXT:    [[TMP5122:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5122]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5123:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5124:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6587:%.*]] = fcmp oeq double [[TMP5123]], [[TMP5124]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6587]], label [[IF_THEN6589:%.*]], label [[IF_END6590:%.*]]
// SIMD-ONLY0:       if.then6589:
// SIMD-ONLY0-NEXT:    [[TMP5125:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5125]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6590]]
// SIMD-ONLY0:       if.end6590:
// SIMD-ONLY0-NEXT:    [[TMP5126:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5126]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5127:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5128:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6591:%.*]] = fcmp oeq double [[TMP5127]], [[TMP5128]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6591]], label [[IF_THEN6593:%.*]], label [[IF_END6594:%.*]]
// SIMD-ONLY0:       if.then6593:
// SIMD-ONLY0-NEXT:    [[TMP5129:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5129]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6594]]
// SIMD-ONLY0:       if.end6594:
// SIMD-ONLY0-NEXT:    [[TMP5130:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5131:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6595:%.*]] = fcmp ogt double [[TMP5130]], [[TMP5131]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6595]], label [[IF_THEN6597:%.*]], label [[IF_END6598:%.*]]
// SIMD-ONLY0:       if.then6597:
// SIMD-ONLY0-NEXT:    [[TMP5132:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5132]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6598]]
// SIMD-ONLY0:       if.end6598:
// SIMD-ONLY0-NEXT:    [[TMP5133:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5133]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5134:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5135:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6599:%.*]] = fcmp ogt double [[TMP5134]], [[TMP5135]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6599]], label [[IF_THEN6601:%.*]], label [[IF_END6602:%.*]]
// SIMD-ONLY0:       if.then6601:
// SIMD-ONLY0-NEXT:    [[TMP5136:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5136]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6602]]
// SIMD-ONLY0:       if.end6602:
// SIMD-ONLY0-NEXT:    [[TMP5137:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5137]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5138:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5139:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6603:%.*]] = fcmp olt double [[TMP5138]], [[TMP5139]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6603]], label [[IF_THEN6605:%.*]], label [[IF_END6606:%.*]]
// SIMD-ONLY0:       if.then6605:
// SIMD-ONLY0-NEXT:    [[TMP5140:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5140]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6606]]
// SIMD-ONLY0:       if.end6606:
// SIMD-ONLY0-NEXT:    [[TMP5141:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5141]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5142:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5143:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6607:%.*]] = fcmp olt double [[TMP5142]], [[TMP5143]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6607]], label [[IF_THEN6609:%.*]], label [[IF_END6610:%.*]]
// SIMD-ONLY0:       if.then6609:
// SIMD-ONLY0-NEXT:    [[TMP5144:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5144]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6610]]
// SIMD-ONLY0:       if.end6610:
// SIMD-ONLY0-NEXT:    [[TMP5145:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5145]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5146:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5147:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6611:%.*]] = fcmp oeq double [[TMP5146]], [[TMP5147]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6611]], label [[IF_THEN6613:%.*]], label [[IF_END6614:%.*]]
// SIMD-ONLY0:       if.then6613:
// SIMD-ONLY0-NEXT:    [[TMP5148:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5148]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6614]]
// SIMD-ONLY0:       if.end6614:
// SIMD-ONLY0-NEXT:    [[TMP5149:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5149]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5150:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5151:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6615:%.*]] = fcmp oeq double [[TMP5150]], [[TMP5151]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6615]], label [[IF_THEN6617:%.*]], label [[IF_END6618:%.*]]
// SIMD-ONLY0:       if.then6617:
// SIMD-ONLY0-NEXT:    [[TMP5152:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5152]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6618]]
// SIMD-ONLY0:       if.end6618:
// SIMD-ONLY0-NEXT:    [[TMP5153:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5153]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5154:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5155:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6619:%.*]] = fcmp oeq double [[TMP5154]], [[TMP5155]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6619]], label [[IF_THEN6621:%.*]], label [[IF_ELSE6622:%.*]]
// SIMD-ONLY0:       if.then6621:
// SIMD-ONLY0-NEXT:    [[TMP5156:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5156]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6623:%.*]]
// SIMD-ONLY0:       if.else6622:
// SIMD-ONLY0-NEXT:    [[TMP5157:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5157]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6623]]
// SIMD-ONLY0:       if.end6623:
// SIMD-ONLY0-NEXT:    [[TMP5158:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5159:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6624:%.*]] = fcmp oeq double [[TMP5158]], [[TMP5159]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6624]], label [[IF_THEN6626:%.*]], label [[IF_ELSE6627:%.*]]
// SIMD-ONLY0:       if.then6626:
// SIMD-ONLY0-NEXT:    [[TMP5160:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5160]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6628:%.*]]
// SIMD-ONLY0:       if.else6627:
// SIMD-ONLY0-NEXT:    [[TMP5161:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5161]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6628]]
// SIMD-ONLY0:       if.end6628:
// SIMD-ONLY0-NEXT:    [[TMP5162:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5163:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6629:%.*]] = fcmp oeq double [[TMP5162]], [[TMP5163]]
// SIMD-ONLY0-NEXT:    [[CONV6630:%.*]] = zext i1 [[CMP6629]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6630]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5164:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6631:%.*]] = icmp ne i32 [[TMP5164]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6631]], label [[IF_THEN6632:%.*]], label [[IF_END6633:%.*]]
// SIMD-ONLY0:       if.then6632:
// SIMD-ONLY0-NEXT:    [[TMP5165:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5165]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6633]]
// SIMD-ONLY0:       if.end6633:
// SIMD-ONLY0-NEXT:    [[TMP5166:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5167:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6634:%.*]] = fcmp oeq double [[TMP5166]], [[TMP5167]]
// SIMD-ONLY0-NEXT:    [[CONV6635:%.*]] = zext i1 [[CMP6634]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6635]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5168:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6636:%.*]] = icmp ne i32 [[TMP5168]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6636]], label [[IF_THEN6637:%.*]], label [[IF_END6638:%.*]]
// SIMD-ONLY0:       if.then6637:
// SIMD-ONLY0-NEXT:    [[TMP5169:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5169]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6638]]
// SIMD-ONLY0:       if.end6638:
// SIMD-ONLY0-NEXT:    [[TMP5170:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5171:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6639:%.*]] = fcmp oeq double [[TMP5170]], [[TMP5171]]
// SIMD-ONLY0-NEXT:    [[CONV6640:%.*]] = zext i1 [[CMP6639]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6640]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5172:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6641:%.*]] = icmp ne i32 [[TMP5172]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6641]], label [[IF_THEN6642:%.*]], label [[IF_ELSE6643:%.*]]
// SIMD-ONLY0:       if.then6642:
// SIMD-ONLY0-NEXT:    [[TMP5173:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5173]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6644:%.*]]
// SIMD-ONLY0:       if.else6643:
// SIMD-ONLY0-NEXT:    [[TMP5174:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5174]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6644]]
// SIMD-ONLY0:       if.end6644:
// SIMD-ONLY0-NEXT:    [[TMP5175:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5176:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6645:%.*]] = fcmp oeq double [[TMP5175]], [[TMP5176]]
// SIMD-ONLY0-NEXT:    [[CONV6646:%.*]] = zext i1 [[CMP6645]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6646]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5177:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6647:%.*]] = icmp ne i32 [[TMP5177]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6647]], label [[IF_THEN6648:%.*]], label [[IF_ELSE6649:%.*]]
// SIMD-ONLY0:       if.then6648:
// SIMD-ONLY0-NEXT:    [[TMP5178:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5178]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6650:%.*]]
// SIMD-ONLY0:       if.else6649:
// SIMD-ONLY0-NEXT:    [[TMP5179:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5179]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6650]]
// SIMD-ONLY0:       if.end6650:
// SIMD-ONLY0-NEXT:    [[TMP5180:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5180]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5181:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5182:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6651:%.*]] = fcmp ogt double [[TMP5181]], [[TMP5182]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6651]], label [[IF_THEN6653:%.*]], label [[IF_END6654:%.*]]
// SIMD-ONLY0:       if.then6653:
// SIMD-ONLY0-NEXT:    [[TMP5183:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5183]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6654]]
// SIMD-ONLY0:       if.end6654:
// SIMD-ONLY0-NEXT:    [[TMP5184:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5184]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5185:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5186:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6655:%.*]] = fcmp ogt double [[TMP5185]], [[TMP5186]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6655]], label [[IF_THEN6657:%.*]], label [[IF_END6658:%.*]]
// SIMD-ONLY0:       if.then6657:
// SIMD-ONLY0-NEXT:    [[TMP5187:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5187]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6658]]
// SIMD-ONLY0:       if.end6658:
// SIMD-ONLY0-NEXT:    [[TMP5188:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5188]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5189:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5190:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6659:%.*]] = fcmp olt double [[TMP5189]], [[TMP5190]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6659]], label [[IF_THEN6661:%.*]], label [[IF_END6662:%.*]]
// SIMD-ONLY0:       if.then6661:
// SIMD-ONLY0-NEXT:    [[TMP5191:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5191]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6662]]
// SIMD-ONLY0:       if.end6662:
// SIMD-ONLY0-NEXT:    [[TMP5192:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5192]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5193:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5194:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6663:%.*]] = fcmp olt double [[TMP5193]], [[TMP5194]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6663]], label [[IF_THEN6665:%.*]], label [[IF_END6666:%.*]]
// SIMD-ONLY0:       if.then6665:
// SIMD-ONLY0-NEXT:    [[TMP5195:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5195]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6666]]
// SIMD-ONLY0:       if.end6666:
// SIMD-ONLY0-NEXT:    [[TMP5196:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5196]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5197:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5198:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6667:%.*]] = fcmp oeq double [[TMP5197]], [[TMP5198]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6667]], label [[IF_THEN6669:%.*]], label [[IF_END6670:%.*]]
// SIMD-ONLY0:       if.then6669:
// SIMD-ONLY0-NEXT:    [[TMP5199:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5199]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6670]]
// SIMD-ONLY0:       if.end6670:
// SIMD-ONLY0-NEXT:    [[TMP5200:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5200]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5201:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5202:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6671:%.*]] = fcmp oeq double [[TMP5201]], [[TMP5202]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6671]], label [[IF_THEN6673:%.*]], label [[IF_END6674:%.*]]
// SIMD-ONLY0:       if.then6673:
// SIMD-ONLY0-NEXT:    [[TMP5203:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5203]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6674]]
// SIMD-ONLY0:       if.end6674:
// SIMD-ONLY0-NEXT:    [[TMP5204:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5205:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6675:%.*]] = fcmp ogt double [[TMP5204]], [[TMP5205]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6675]], label [[IF_THEN6677:%.*]], label [[IF_END6678:%.*]]
// SIMD-ONLY0:       if.then6677:
// SIMD-ONLY0-NEXT:    [[TMP5206:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5206]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6678]]
// SIMD-ONLY0:       if.end6678:
// SIMD-ONLY0-NEXT:    [[TMP5207:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5207]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5208:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5209:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6679:%.*]] = fcmp ogt double [[TMP5208]], [[TMP5209]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6679]], label [[IF_THEN6681:%.*]], label [[IF_END6682:%.*]]
// SIMD-ONLY0:       if.then6681:
// SIMD-ONLY0-NEXT:    [[TMP5210:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5210]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6682]]
// SIMD-ONLY0:       if.end6682:
// SIMD-ONLY0-NEXT:    [[TMP5211:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5211]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5212:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5213:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6683:%.*]] = fcmp olt double [[TMP5212]], [[TMP5213]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6683]], label [[IF_THEN6685:%.*]], label [[IF_END6686:%.*]]
// SIMD-ONLY0:       if.then6685:
// SIMD-ONLY0-NEXT:    [[TMP5214:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5214]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6686]]
// SIMD-ONLY0:       if.end6686:
// SIMD-ONLY0-NEXT:    [[TMP5215:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5215]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5216:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5217:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6687:%.*]] = fcmp olt double [[TMP5216]], [[TMP5217]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6687]], label [[IF_THEN6689:%.*]], label [[IF_END6690:%.*]]
// SIMD-ONLY0:       if.then6689:
// SIMD-ONLY0-NEXT:    [[TMP5218:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5218]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6690]]
// SIMD-ONLY0:       if.end6690:
// SIMD-ONLY0-NEXT:    [[TMP5219:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5219]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5220:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5221:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6691:%.*]] = fcmp oeq double [[TMP5220]], [[TMP5221]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6691]], label [[IF_THEN6693:%.*]], label [[IF_END6694:%.*]]
// SIMD-ONLY0:       if.then6693:
// SIMD-ONLY0-NEXT:    [[TMP5222:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5222]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6694]]
// SIMD-ONLY0:       if.end6694:
// SIMD-ONLY0-NEXT:    [[TMP5223:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5223]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5224:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5225:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6695:%.*]] = fcmp oeq double [[TMP5224]], [[TMP5225]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6695]], label [[IF_THEN6697:%.*]], label [[IF_END6698:%.*]]
// SIMD-ONLY0:       if.then6697:
// SIMD-ONLY0-NEXT:    [[TMP5226:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5226]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6698]]
// SIMD-ONLY0:       if.end6698:
// SIMD-ONLY0-NEXT:    [[TMP5227:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5227]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5228:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5229:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6699:%.*]] = fcmp oeq double [[TMP5228]], [[TMP5229]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6699]], label [[IF_THEN6701:%.*]], label [[IF_ELSE6702:%.*]]
// SIMD-ONLY0:       if.then6701:
// SIMD-ONLY0-NEXT:    [[TMP5230:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5230]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6703:%.*]]
// SIMD-ONLY0:       if.else6702:
// SIMD-ONLY0-NEXT:    [[TMP5231:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5231]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6703]]
// SIMD-ONLY0:       if.end6703:
// SIMD-ONLY0-NEXT:    [[TMP5232:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5233:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6704:%.*]] = fcmp oeq double [[TMP5232]], [[TMP5233]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6704]], label [[IF_THEN6706:%.*]], label [[IF_ELSE6707:%.*]]
// SIMD-ONLY0:       if.then6706:
// SIMD-ONLY0-NEXT:    [[TMP5234:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5234]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6708:%.*]]
// SIMD-ONLY0:       if.else6707:
// SIMD-ONLY0-NEXT:    [[TMP5235:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5235]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6708]]
// SIMD-ONLY0:       if.end6708:
// SIMD-ONLY0-NEXT:    [[TMP5236:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5237:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6709:%.*]] = fcmp oeq double [[TMP5236]], [[TMP5237]]
// SIMD-ONLY0-NEXT:    [[CONV6710:%.*]] = zext i1 [[CMP6709]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6710]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5238:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6711:%.*]] = icmp ne i32 [[TMP5238]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6711]], label [[IF_THEN6712:%.*]], label [[IF_END6713:%.*]]
// SIMD-ONLY0:       if.then6712:
// SIMD-ONLY0-NEXT:    [[TMP5239:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5239]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6713]]
// SIMD-ONLY0:       if.end6713:
// SIMD-ONLY0-NEXT:    [[TMP5240:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5241:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6714:%.*]] = fcmp oeq double [[TMP5240]], [[TMP5241]]
// SIMD-ONLY0-NEXT:    [[CONV6715:%.*]] = zext i1 [[CMP6714]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6715]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5242:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6716:%.*]] = icmp ne i32 [[TMP5242]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6716]], label [[IF_THEN6717:%.*]], label [[IF_END6718:%.*]]
// SIMD-ONLY0:       if.then6717:
// SIMD-ONLY0-NEXT:    [[TMP5243:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5243]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6718]]
// SIMD-ONLY0:       if.end6718:
// SIMD-ONLY0-NEXT:    [[TMP5244:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5245:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6719:%.*]] = fcmp oeq double [[TMP5244]], [[TMP5245]]
// SIMD-ONLY0-NEXT:    [[CONV6720:%.*]] = zext i1 [[CMP6719]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6720]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5246:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6721:%.*]] = icmp ne i32 [[TMP5246]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6721]], label [[IF_THEN6722:%.*]], label [[IF_ELSE6723:%.*]]
// SIMD-ONLY0:       if.then6722:
// SIMD-ONLY0-NEXT:    [[TMP5247:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5247]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6724:%.*]]
// SIMD-ONLY0:       if.else6723:
// SIMD-ONLY0-NEXT:    [[TMP5248:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5248]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6724]]
// SIMD-ONLY0:       if.end6724:
// SIMD-ONLY0-NEXT:    [[TMP5249:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5250:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6725:%.*]] = fcmp oeq double [[TMP5249]], [[TMP5250]]
// SIMD-ONLY0-NEXT:    [[CONV6726:%.*]] = zext i1 [[CMP6725]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6726]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5251:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6727:%.*]] = icmp ne i32 [[TMP5251]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6727]], label [[IF_THEN6728:%.*]], label [[IF_ELSE6729:%.*]]
// SIMD-ONLY0:       if.then6728:
// SIMD-ONLY0-NEXT:    [[TMP5252:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5252]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6730:%.*]]
// SIMD-ONLY0:       if.else6729:
// SIMD-ONLY0-NEXT:    [[TMP5253:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5253]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6730]]
// SIMD-ONLY0:       if.end6730:
// SIMD-ONLY0-NEXT:    [[TMP5254:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5254]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5255:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5256:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6731:%.*]] = fcmp ogt double [[TMP5255]], [[TMP5256]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6731]], label [[IF_THEN6733:%.*]], label [[IF_END6734:%.*]]
// SIMD-ONLY0:       if.then6733:
// SIMD-ONLY0-NEXT:    [[TMP5257:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5257]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6734]]
// SIMD-ONLY0:       if.end6734:
// SIMD-ONLY0-NEXT:    [[TMP5258:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5258]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5259:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5260:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6735:%.*]] = fcmp ogt double [[TMP5259]], [[TMP5260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6735]], label [[IF_THEN6737:%.*]], label [[IF_END6738:%.*]]
// SIMD-ONLY0:       if.then6737:
// SIMD-ONLY0-NEXT:    [[TMP5261:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5261]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6738]]
// SIMD-ONLY0:       if.end6738:
// SIMD-ONLY0-NEXT:    [[TMP5262:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5262]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5263:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5264:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6739:%.*]] = fcmp olt double [[TMP5263]], [[TMP5264]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6739]], label [[IF_THEN6741:%.*]], label [[IF_END6742:%.*]]
// SIMD-ONLY0:       if.then6741:
// SIMD-ONLY0-NEXT:    [[TMP5265:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5265]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6742]]
// SIMD-ONLY0:       if.end6742:
// SIMD-ONLY0-NEXT:    [[TMP5266:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5266]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5267:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5268:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6743:%.*]] = fcmp olt double [[TMP5267]], [[TMP5268]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6743]], label [[IF_THEN6745:%.*]], label [[IF_END6746:%.*]]
// SIMD-ONLY0:       if.then6745:
// SIMD-ONLY0-NEXT:    [[TMP5269:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5269]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6746]]
// SIMD-ONLY0:       if.end6746:
// SIMD-ONLY0-NEXT:    [[TMP5270:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5270]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5271:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5272:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6747:%.*]] = fcmp oeq double [[TMP5271]], [[TMP5272]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6747]], label [[IF_THEN6749:%.*]], label [[IF_END6750:%.*]]
// SIMD-ONLY0:       if.then6749:
// SIMD-ONLY0-NEXT:    [[TMP5273:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5273]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6750]]
// SIMD-ONLY0:       if.end6750:
// SIMD-ONLY0-NEXT:    [[TMP5274:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5274]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5275:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5276:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6751:%.*]] = fcmp oeq double [[TMP5275]], [[TMP5276]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6751]], label [[IF_THEN6753:%.*]], label [[IF_END6754:%.*]]
// SIMD-ONLY0:       if.then6753:
// SIMD-ONLY0-NEXT:    [[TMP5277:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5277]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6754]]
// SIMD-ONLY0:       if.end6754:
// SIMD-ONLY0-NEXT:    [[TMP5278:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5279:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6755:%.*]] = fcmp ogt double [[TMP5278]], [[TMP5279]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6755]], label [[IF_THEN6757:%.*]], label [[IF_END6758:%.*]]
// SIMD-ONLY0:       if.then6757:
// SIMD-ONLY0-NEXT:    [[TMP5280:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5280]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6758]]
// SIMD-ONLY0:       if.end6758:
// SIMD-ONLY0-NEXT:    [[TMP5281:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5281]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5282:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5283:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6759:%.*]] = fcmp ogt double [[TMP5282]], [[TMP5283]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6759]], label [[IF_THEN6761:%.*]], label [[IF_END6762:%.*]]
// SIMD-ONLY0:       if.then6761:
// SIMD-ONLY0-NEXT:    [[TMP5284:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5284]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6762]]
// SIMD-ONLY0:       if.end6762:
// SIMD-ONLY0-NEXT:    [[TMP5285:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5285]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5286:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5287:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6763:%.*]] = fcmp olt double [[TMP5286]], [[TMP5287]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6763]], label [[IF_THEN6765:%.*]], label [[IF_END6766:%.*]]
// SIMD-ONLY0:       if.then6765:
// SIMD-ONLY0-NEXT:    [[TMP5288:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5288]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6766]]
// SIMD-ONLY0:       if.end6766:
// SIMD-ONLY0-NEXT:    [[TMP5289:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5289]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5290:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5291:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6767:%.*]] = fcmp olt double [[TMP5290]], [[TMP5291]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6767]], label [[IF_THEN6769:%.*]], label [[IF_END6770:%.*]]
// SIMD-ONLY0:       if.then6769:
// SIMD-ONLY0-NEXT:    [[TMP5292:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5292]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6770]]
// SIMD-ONLY0:       if.end6770:
// SIMD-ONLY0-NEXT:    [[TMP5293:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5293]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5294:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5295:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6771:%.*]] = fcmp oeq double [[TMP5294]], [[TMP5295]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6771]], label [[IF_THEN6773:%.*]], label [[IF_END6774:%.*]]
// SIMD-ONLY0:       if.then6773:
// SIMD-ONLY0-NEXT:    [[TMP5296:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5296]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6774]]
// SIMD-ONLY0:       if.end6774:
// SIMD-ONLY0-NEXT:    [[TMP5297:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5297]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5298:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5299:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6775:%.*]] = fcmp oeq double [[TMP5298]], [[TMP5299]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6775]], label [[IF_THEN6777:%.*]], label [[IF_END6778:%.*]]
// SIMD-ONLY0:       if.then6777:
// SIMD-ONLY0-NEXT:    [[TMP5300:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5300]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6778]]
// SIMD-ONLY0:       if.end6778:
// SIMD-ONLY0-NEXT:    [[TMP5301:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5301]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5302:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5303:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6779:%.*]] = fcmp oeq double [[TMP5302]], [[TMP5303]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6779]], label [[IF_THEN6781:%.*]], label [[IF_ELSE6782:%.*]]
// SIMD-ONLY0:       if.then6781:
// SIMD-ONLY0-NEXT:    [[TMP5304:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5304]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6783:%.*]]
// SIMD-ONLY0:       if.else6782:
// SIMD-ONLY0-NEXT:    [[TMP5305:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5305]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6783]]
// SIMD-ONLY0:       if.end6783:
// SIMD-ONLY0-NEXT:    [[TMP5306:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5307:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6784:%.*]] = fcmp oeq double [[TMP5306]], [[TMP5307]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6784]], label [[IF_THEN6786:%.*]], label [[IF_ELSE6787:%.*]]
// SIMD-ONLY0:       if.then6786:
// SIMD-ONLY0-NEXT:    [[TMP5308:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5308]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6788:%.*]]
// SIMD-ONLY0:       if.else6787:
// SIMD-ONLY0-NEXT:    [[TMP5309:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5309]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6788]]
// SIMD-ONLY0:       if.end6788:
// SIMD-ONLY0-NEXT:    [[TMP5310:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5311:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6789:%.*]] = fcmp oeq double [[TMP5310]], [[TMP5311]]
// SIMD-ONLY0-NEXT:    [[CONV6790:%.*]] = zext i1 [[CMP6789]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6790]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5312:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6791:%.*]] = icmp ne i32 [[TMP5312]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6791]], label [[IF_THEN6792:%.*]], label [[IF_END6793:%.*]]
// SIMD-ONLY0:       if.then6792:
// SIMD-ONLY0-NEXT:    [[TMP5313:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5313]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6793]]
// SIMD-ONLY0:       if.end6793:
// SIMD-ONLY0-NEXT:    [[TMP5314:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5315:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6794:%.*]] = fcmp oeq double [[TMP5314]], [[TMP5315]]
// SIMD-ONLY0-NEXT:    [[CONV6795:%.*]] = zext i1 [[CMP6794]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6795]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5316:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6796:%.*]] = icmp ne i32 [[TMP5316]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6796]], label [[IF_THEN6797:%.*]], label [[IF_END6798:%.*]]
// SIMD-ONLY0:       if.then6797:
// SIMD-ONLY0-NEXT:    [[TMP5317:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5317]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6798]]
// SIMD-ONLY0:       if.end6798:
// SIMD-ONLY0-NEXT:    [[TMP5318:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5319:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6799:%.*]] = fcmp oeq double [[TMP5318]], [[TMP5319]]
// SIMD-ONLY0-NEXT:    [[CONV6800:%.*]] = zext i1 [[CMP6799]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6800]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5320:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6801:%.*]] = icmp ne i32 [[TMP5320]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6801]], label [[IF_THEN6802:%.*]], label [[IF_ELSE6803:%.*]]
// SIMD-ONLY0:       if.then6802:
// SIMD-ONLY0-NEXT:    [[TMP5321:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5321]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6804:%.*]]
// SIMD-ONLY0:       if.else6803:
// SIMD-ONLY0-NEXT:    [[TMP5322:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5322]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6804]]
// SIMD-ONLY0:       if.end6804:
// SIMD-ONLY0-NEXT:    [[TMP5323:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5324:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6805:%.*]] = fcmp oeq double [[TMP5323]], [[TMP5324]]
// SIMD-ONLY0-NEXT:    [[CONV6806:%.*]] = zext i1 [[CMP6805]] to i32
// SIMD-ONLY0-NEXT:    store i32 [[CONV6806]], ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5325:%.*]] = load i32, ptr [[IR]], align 4
// SIMD-ONLY0-NEXT:    [[TOBOOL6807:%.*]] = icmp ne i32 [[TMP5325]], 0
// SIMD-ONLY0-NEXT:    br i1 [[TOBOOL6807]], label [[IF_THEN6808:%.*]], label [[IF_ELSE6809:%.*]]
// SIMD-ONLY0:       if.then6808:
// SIMD-ONLY0-NEXT:    [[TMP5326:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5326]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6810:%.*]]
// SIMD-ONLY0:       if.else6809:
// SIMD-ONLY0-NEXT:    [[TMP5327:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5327]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    br label [[IF_END6810]]
// SIMD-ONLY0:       if.end6810:
// SIMD-ONLY0-NEXT:    ret void
//
//
// SIMD-ONLY0-LABEL: @cxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[CX:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CV:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CE:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[CD:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP0]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV:%.*]] = sext i8 [[TMP1]] to i32
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1:%.*]] = sext i8 [[TMP2]] to i32
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV1]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV3:%.*]] = sext i8 [[TMP3]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV4:%.*]] = sext i8 [[TMP4]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[CONV3]], [[COND_TRUE]] ], [ [[CONV4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    [[CONV5:%.*]] = trunc i32 [[COND]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV5]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP5]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV6:%.*]] = sext i8 [[TMP6]] to i32
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV7:%.*]] = sext i8 [[TMP7]] to i32
// SIMD-ONLY0-NEXT:    [[CMP8:%.*]] = icmp slt i32 [[CONV6]], [[CONV7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP8]], label [[COND_TRUE10:%.*]], label [[COND_FALSE12:%.*]]
// SIMD-ONLY0:       cond.true10:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV11:%.*]] = sext i8 [[TMP8]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false12:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV13:%.*]] = sext i8 [[TMP9]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[CONV11]], [[COND_TRUE10]] ], [ [[CONV13]], [[COND_FALSE12]] ]
// SIMD-ONLY0-NEXT:    [[CONV16:%.*]] = trunc i32 [[COND15]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV16]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP10]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV17:%.*]] = sext i8 [[TMP11]] to i32
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV18:%.*]] = sext i8 [[TMP12]] to i32
// SIMD-ONLY0-NEXT:    [[CMP19:%.*]] = icmp eq i32 [[CONV17]], [[CONV18]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP19]], label [[COND_TRUE21:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true21:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV22:%.*]] = sext i8 [[TMP13]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV24:%.*]] = sext i8 [[TMP14]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25]]
// SIMD-ONLY0:       cond.end25:
// SIMD-ONLY0-NEXT:    [[COND26:%.*]] = phi i32 [ [[CONV22]], [[COND_TRUE21]] ], [ [[CONV24]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    [[CONV27:%.*]] = trunc i32 [[COND26]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV27]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV28:%.*]] = sext i8 [[TMP15]] to i32
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV29:%.*]] = sext i8 [[TMP16]] to i32
// SIMD-ONLY0-NEXT:    [[CMP30:%.*]] = icmp sgt i32 [[CONV28]], [[CONV29]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP30]], label [[COND_TRUE32:%.*]], label [[COND_FALSE34:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV33:%.*]] = sext i8 [[TMP17]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36:%.*]]
// SIMD-ONLY0:       cond.false34:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV35:%.*]] = sext i8 [[TMP18]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36]]
// SIMD-ONLY0:       cond.end36:
// SIMD-ONLY0-NEXT:    [[COND37:%.*]] = phi i32 [ [[CONV33]], [[COND_TRUE32]] ], [ [[CONV35]], [[COND_FALSE34]] ]
// SIMD-ONLY0-NEXT:    [[CONV38:%.*]] = trunc i32 [[COND37]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV38]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP19]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV39:%.*]] = sext i8 [[TMP20]] to i32
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV40:%.*]] = sext i8 [[TMP21]] to i32
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp slt i32 [[CONV39]], [[CONV40]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE43:%.*]], label [[COND_FALSE45:%.*]]
// SIMD-ONLY0:       cond.true43:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV44:%.*]] = sext i8 [[TMP22]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47:%.*]]
// SIMD-ONLY0:       cond.false45:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV46:%.*]] = sext i8 [[TMP23]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47]]
// SIMD-ONLY0:       cond.end47:
// SIMD-ONLY0-NEXT:    [[COND48:%.*]] = phi i32 [ [[CONV44]], [[COND_TRUE43]] ], [ [[CONV46]], [[COND_FALSE45]] ]
// SIMD-ONLY0-NEXT:    [[CONV49:%.*]] = trunc i32 [[COND48]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV49]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP24]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV50:%.*]] = sext i8 [[TMP25]] to i32
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV51:%.*]] = sext i8 [[TMP26]] to i32
// SIMD-ONLY0-NEXT:    [[CMP52:%.*]] = icmp eq i32 [[CONV50]], [[CONV51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP52]], label [[COND_TRUE54:%.*]], label [[COND_FALSE56:%.*]]
// SIMD-ONLY0:       cond.true54:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV55:%.*]] = sext i8 [[TMP27]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58:%.*]]
// SIMD-ONLY0:       cond.false56:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV57:%.*]] = sext i8 [[TMP28]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58]]
// SIMD-ONLY0:       cond.end58:
// SIMD-ONLY0-NEXT:    [[COND59:%.*]] = phi i32 [ [[CONV55]], [[COND_TRUE54]] ], [ [[CONV57]], [[COND_FALSE56]] ]
// SIMD-ONLY0-NEXT:    [[CONV60:%.*]] = trunc i32 [[COND59]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV60]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP29]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP30]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV61:%.*]] = sext i8 [[TMP31]] to i32
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV62:%.*]] = sext i8 [[TMP32]] to i32
// SIMD-ONLY0-NEXT:    [[CMP63:%.*]] = icmp sgt i32 [[CONV61]], [[CONV62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP63]], label [[COND_TRUE65:%.*]], label [[COND_FALSE67:%.*]]
// SIMD-ONLY0:       cond.true65:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV66:%.*]] = sext i8 [[TMP33]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false67:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV68:%.*]] = sext i8 [[TMP34]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[CONV66]], [[COND_TRUE65]] ], [ [[CONV68]], [[COND_FALSE67]] ]
// SIMD-ONLY0-NEXT:    [[CONV71:%.*]] = trunc i32 [[COND70]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV71]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP35]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV72:%.*]] = sext i8 [[TMP36]] to i32
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV73:%.*]] = sext i8 [[TMP37]] to i32
// SIMD-ONLY0-NEXT:    [[CMP74:%.*]] = icmp slt i32 [[CONV72]], [[CONV73]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP74]], label [[COND_TRUE76:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true76:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV77:%.*]] = sext i8 [[TMP38]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV79:%.*]] = sext i8 [[TMP39]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80]]
// SIMD-ONLY0:       cond.end80:
// SIMD-ONLY0-NEXT:    [[COND81:%.*]] = phi i32 [ [[CONV77]], [[COND_TRUE76]] ], [ [[CONV79]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    [[CONV82:%.*]] = trunc i32 [[COND81]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV82]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP40]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV83:%.*]] = sext i8 [[TMP41]] to i32
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV84:%.*]] = sext i8 [[TMP42]] to i32
// SIMD-ONLY0-NEXT:    [[CMP85:%.*]] = icmp eq i32 [[CONV83]], [[CONV84]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP85]], label [[COND_TRUE87:%.*]], label [[COND_FALSE89:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV88:%.*]] = sext i8 [[TMP43]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91:%.*]]
// SIMD-ONLY0:       cond.false89:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV90:%.*]] = sext i8 [[TMP44]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91]]
// SIMD-ONLY0:       cond.end91:
// SIMD-ONLY0-NEXT:    [[COND92:%.*]] = phi i32 [ [[CONV88]], [[COND_TRUE87]] ], [ [[CONV90]], [[COND_FALSE89]] ]
// SIMD-ONLY0-NEXT:    [[CONV93:%.*]] = trunc i32 [[COND92]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV93]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV94:%.*]] = sext i8 [[TMP45]] to i32
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV95:%.*]] = sext i8 [[TMP46]] to i32
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp sgt i32 [[CONV94]], [[CONV95]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE98:%.*]], label [[COND_FALSE100:%.*]]
// SIMD-ONLY0:       cond.true98:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV99:%.*]] = sext i8 [[TMP47]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102:%.*]]
// SIMD-ONLY0:       cond.false100:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV101:%.*]] = sext i8 [[TMP48]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102]]
// SIMD-ONLY0:       cond.end102:
// SIMD-ONLY0-NEXT:    [[COND103:%.*]] = phi i32 [ [[CONV99]], [[COND_TRUE98]] ], [ [[CONV101]], [[COND_FALSE100]] ]
// SIMD-ONLY0-NEXT:    [[CONV104:%.*]] = trunc i32 [[COND103]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV104]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP49]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV105:%.*]] = sext i8 [[TMP50]] to i32
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV106:%.*]] = sext i8 [[TMP51]] to i32
// SIMD-ONLY0-NEXT:    [[CMP107:%.*]] = icmp slt i32 [[CONV105]], [[CONV106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP107]], label [[COND_TRUE109:%.*]], label [[COND_FALSE111:%.*]]
// SIMD-ONLY0:       cond.true109:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV110:%.*]] = sext i8 [[TMP52]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113:%.*]]
// SIMD-ONLY0:       cond.false111:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV112:%.*]] = sext i8 [[TMP53]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113]]
// SIMD-ONLY0:       cond.end113:
// SIMD-ONLY0-NEXT:    [[COND114:%.*]] = phi i32 [ [[CONV110]], [[COND_TRUE109]] ], [ [[CONV112]], [[COND_FALSE111]] ]
// SIMD-ONLY0-NEXT:    [[CONV115:%.*]] = trunc i32 [[COND114]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV115]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP54]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV116:%.*]] = sext i8 [[TMP55]] to i32
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV117:%.*]] = sext i8 [[TMP56]] to i32
// SIMD-ONLY0-NEXT:    [[CMP118:%.*]] = icmp eq i32 [[CONV116]], [[CONV117]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP118]], label [[COND_TRUE120:%.*]], label [[COND_FALSE122:%.*]]
// SIMD-ONLY0:       cond.true120:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV121:%.*]] = sext i8 [[TMP57]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false122:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV123:%.*]] = sext i8 [[TMP58]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i32 [ [[CONV121]], [[COND_TRUE120]] ], [ [[CONV123]], [[COND_FALSE122]] ]
// SIMD-ONLY0-NEXT:    [[CONV126:%.*]] = trunc i32 [[COND125]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV126]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP59]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP60]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV127:%.*]] = sext i8 [[TMP61]] to i32
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV128:%.*]] = sext i8 [[TMP62]] to i32
// SIMD-ONLY0-NEXT:    [[CMP129:%.*]] = icmp sgt i32 [[CONV127]], [[CONV128]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP129]], label [[COND_TRUE131:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true131:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV132:%.*]] = sext i8 [[TMP63]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV134:%.*]] = sext i8 [[TMP64]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135]]
// SIMD-ONLY0:       cond.end135:
// SIMD-ONLY0-NEXT:    [[COND136:%.*]] = phi i32 [ [[CONV132]], [[COND_TRUE131]] ], [ [[CONV134]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    [[CONV137:%.*]] = trunc i32 [[COND136]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV137]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP65]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV138:%.*]] = sext i8 [[TMP66]] to i32
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV139:%.*]] = sext i8 [[TMP67]] to i32
// SIMD-ONLY0-NEXT:    [[CMP140:%.*]] = icmp slt i32 [[CONV138]], [[CONV139]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP140]], label [[COND_TRUE142:%.*]], label [[COND_FALSE144:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV143:%.*]] = sext i8 [[TMP68]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146:%.*]]
// SIMD-ONLY0:       cond.false144:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV145:%.*]] = sext i8 [[TMP69]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146]]
// SIMD-ONLY0:       cond.end146:
// SIMD-ONLY0-NEXT:    [[COND147:%.*]] = phi i32 [ [[CONV143]], [[COND_TRUE142]] ], [ [[CONV145]], [[COND_FALSE144]] ]
// SIMD-ONLY0-NEXT:    [[CONV148:%.*]] = trunc i32 [[COND147]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV148]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP70]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV149:%.*]] = sext i8 [[TMP71]] to i32
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV150:%.*]] = sext i8 [[TMP72]] to i32
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp eq i32 [[CONV149]], [[CONV150]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE153:%.*]], label [[COND_FALSE155:%.*]]
// SIMD-ONLY0:       cond.true153:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV154:%.*]] = sext i8 [[TMP73]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157:%.*]]
// SIMD-ONLY0:       cond.false155:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV156:%.*]] = sext i8 [[TMP74]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157]]
// SIMD-ONLY0:       cond.end157:
// SIMD-ONLY0-NEXT:    [[COND158:%.*]] = phi i32 [ [[CONV154]], [[COND_TRUE153]] ], [ [[CONV156]], [[COND_FALSE155]] ]
// SIMD-ONLY0-NEXT:    [[CONV159:%.*]] = trunc i32 [[COND158]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV159]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV160:%.*]] = sext i8 [[TMP75]] to i32
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV161:%.*]] = sext i8 [[TMP76]] to i32
// SIMD-ONLY0-NEXT:    [[CMP162:%.*]] = icmp sgt i32 [[CONV160]], [[CONV161]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP162]], label [[COND_TRUE164:%.*]], label [[COND_FALSE166:%.*]]
// SIMD-ONLY0:       cond.true164:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV165:%.*]] = sext i8 [[TMP77]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168:%.*]]
// SIMD-ONLY0:       cond.false166:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV167:%.*]] = sext i8 [[TMP78]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168]]
// SIMD-ONLY0:       cond.end168:
// SIMD-ONLY0-NEXT:    [[COND169:%.*]] = phi i32 [ [[CONV165]], [[COND_TRUE164]] ], [ [[CONV167]], [[COND_FALSE166]] ]
// SIMD-ONLY0-NEXT:    [[CONV170:%.*]] = trunc i32 [[COND169]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV170]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP79]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV171:%.*]] = sext i8 [[TMP80]] to i32
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV172:%.*]] = sext i8 [[TMP81]] to i32
// SIMD-ONLY0-NEXT:    [[CMP173:%.*]] = icmp slt i32 [[CONV171]], [[CONV172]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP173]], label [[COND_TRUE175:%.*]], label [[COND_FALSE177:%.*]]
// SIMD-ONLY0:       cond.true175:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV176:%.*]] = sext i8 [[TMP82]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179:%.*]]
// SIMD-ONLY0:       cond.false177:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV178:%.*]] = sext i8 [[TMP83]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179]]
// SIMD-ONLY0:       cond.end179:
// SIMD-ONLY0-NEXT:    [[COND180:%.*]] = phi i32 [ [[CONV176]], [[COND_TRUE175]] ], [ [[CONV178]], [[COND_FALSE177]] ]
// SIMD-ONLY0-NEXT:    [[CONV181:%.*]] = trunc i32 [[COND180]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV181]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP84]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV182:%.*]] = sext i8 [[TMP85]] to i32
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV183:%.*]] = sext i8 [[TMP86]] to i32
// SIMD-ONLY0-NEXT:    [[CMP184:%.*]] = icmp eq i32 [[CONV182]], [[CONV183]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP184]], label [[COND_TRUE186:%.*]], label [[COND_FALSE188:%.*]]
// SIMD-ONLY0:       cond.true186:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV187:%.*]] = sext i8 [[TMP87]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190:%.*]]
// SIMD-ONLY0:       cond.false188:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV189:%.*]] = sext i8 [[TMP88]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190]]
// SIMD-ONLY0:       cond.end190:
// SIMD-ONLY0-NEXT:    [[COND191:%.*]] = phi i32 [ [[CONV187]], [[COND_TRUE186]] ], [ [[CONV189]], [[COND_FALSE188]] ]
// SIMD-ONLY0-NEXT:    [[CONV192:%.*]] = trunc i32 [[COND191]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV192]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP89]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP90]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV193:%.*]] = sext i8 [[TMP91]] to i32
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV194:%.*]] = sext i8 [[TMP92]] to i32
// SIMD-ONLY0-NEXT:    [[CMP195:%.*]] = icmp sgt i32 [[CONV193]], [[CONV194]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP195]], label [[COND_TRUE197:%.*]], label [[COND_FALSE199:%.*]]
// SIMD-ONLY0:       cond.true197:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV198:%.*]] = sext i8 [[TMP93]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201:%.*]]
// SIMD-ONLY0:       cond.false199:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV200:%.*]] = sext i8 [[TMP94]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201]]
// SIMD-ONLY0:       cond.end201:
// SIMD-ONLY0-NEXT:    [[COND202:%.*]] = phi i32 [ [[CONV198]], [[COND_TRUE197]] ], [ [[CONV200]], [[COND_FALSE199]] ]
// SIMD-ONLY0-NEXT:    [[CONV203:%.*]] = trunc i32 [[COND202]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV203]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP95]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV204:%.*]] = sext i8 [[TMP96]] to i32
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV205:%.*]] = sext i8 [[TMP97]] to i32
// SIMD-ONLY0-NEXT:    [[CMP206:%.*]] = icmp slt i32 [[CONV204]], [[CONV205]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP206]], label [[COND_TRUE208:%.*]], label [[COND_FALSE210:%.*]]
// SIMD-ONLY0:       cond.true208:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV209:%.*]] = sext i8 [[TMP98]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212:%.*]]
// SIMD-ONLY0:       cond.false210:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV211:%.*]] = sext i8 [[TMP99]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212]]
// SIMD-ONLY0:       cond.end212:
// SIMD-ONLY0-NEXT:    [[COND213:%.*]] = phi i32 [ [[CONV209]], [[COND_TRUE208]] ], [ [[CONV211]], [[COND_FALSE210]] ]
// SIMD-ONLY0-NEXT:    [[CONV214:%.*]] = trunc i32 [[COND213]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV214]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP100]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV215:%.*]] = sext i8 [[TMP101]] to i32
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV216:%.*]] = sext i8 [[TMP102]] to i32
// SIMD-ONLY0-NEXT:    [[CMP217:%.*]] = icmp eq i32 [[CONV215]], [[CONV216]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP217]], label [[COND_TRUE219:%.*]], label [[COND_FALSE221:%.*]]
// SIMD-ONLY0:       cond.true219:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV220:%.*]] = sext i8 [[TMP103]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223:%.*]]
// SIMD-ONLY0:       cond.false221:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV222:%.*]] = sext i8 [[TMP104]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223]]
// SIMD-ONLY0:       cond.end223:
// SIMD-ONLY0-NEXT:    [[COND224:%.*]] = phi i32 [ [[CONV220]], [[COND_TRUE219]] ], [ [[CONV222]], [[COND_FALSE221]] ]
// SIMD-ONLY0-NEXT:    [[CONV225:%.*]] = trunc i32 [[COND224]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV225]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV226:%.*]] = sext i8 [[TMP105]] to i32
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV227:%.*]] = sext i8 [[TMP106]] to i32
// SIMD-ONLY0-NEXT:    [[CMP228:%.*]] = icmp sgt i32 [[CONV226]], [[CONV227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP228]], label [[COND_TRUE230:%.*]], label [[COND_FALSE232:%.*]]
// SIMD-ONLY0:       cond.true230:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV231:%.*]] = sext i8 [[TMP107]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234:%.*]]
// SIMD-ONLY0:       cond.false232:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV233:%.*]] = sext i8 [[TMP108]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234]]
// SIMD-ONLY0:       cond.end234:
// SIMD-ONLY0-NEXT:    [[COND235:%.*]] = phi i32 [ [[CONV231]], [[COND_TRUE230]] ], [ [[CONV233]], [[COND_FALSE232]] ]
// SIMD-ONLY0-NEXT:    [[CONV236:%.*]] = trunc i32 [[COND235]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV236]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP109]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV237:%.*]] = sext i8 [[TMP110]] to i32
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV238:%.*]] = sext i8 [[TMP111]] to i32
// SIMD-ONLY0-NEXT:    [[CMP239:%.*]] = icmp slt i32 [[CONV237]], [[CONV238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP239]], label [[COND_TRUE241:%.*]], label [[COND_FALSE243:%.*]]
// SIMD-ONLY0:       cond.true241:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV242:%.*]] = sext i8 [[TMP112]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245:%.*]]
// SIMD-ONLY0:       cond.false243:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV244:%.*]] = sext i8 [[TMP113]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245]]
// SIMD-ONLY0:       cond.end245:
// SIMD-ONLY0-NEXT:    [[COND246:%.*]] = phi i32 [ [[CONV242]], [[COND_TRUE241]] ], [ [[CONV244]], [[COND_FALSE243]] ]
// SIMD-ONLY0-NEXT:    [[CONV247:%.*]] = trunc i32 [[COND246]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV247]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP114]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV248:%.*]] = sext i8 [[TMP115]] to i32
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV249:%.*]] = sext i8 [[TMP116]] to i32
// SIMD-ONLY0-NEXT:    [[CMP250:%.*]] = icmp eq i32 [[CONV248]], [[CONV249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP250]], label [[COND_TRUE252:%.*]], label [[COND_FALSE254:%.*]]
// SIMD-ONLY0:       cond.true252:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV253:%.*]] = sext i8 [[TMP117]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256:%.*]]
// SIMD-ONLY0:       cond.false254:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV255:%.*]] = sext i8 [[TMP118]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256]]
// SIMD-ONLY0:       cond.end256:
// SIMD-ONLY0-NEXT:    [[COND257:%.*]] = phi i32 [ [[CONV253]], [[COND_TRUE252]] ], [ [[CONV255]], [[COND_FALSE254]] ]
// SIMD-ONLY0-NEXT:    [[CONV258:%.*]] = trunc i32 [[COND257]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV258]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP119]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP120]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV259:%.*]] = sext i8 [[TMP121]] to i32
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV260:%.*]] = sext i8 [[TMP122]] to i32
// SIMD-ONLY0-NEXT:    [[CMP261:%.*]] = icmp sgt i32 [[CONV259]], [[CONV260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP261]], label [[COND_TRUE263:%.*]], label [[COND_FALSE265:%.*]]
// SIMD-ONLY0:       cond.true263:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV264:%.*]] = sext i8 [[TMP123]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267:%.*]]
// SIMD-ONLY0:       cond.false265:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV266:%.*]] = sext i8 [[TMP124]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267]]
// SIMD-ONLY0:       cond.end267:
// SIMD-ONLY0-NEXT:    [[COND268:%.*]] = phi i32 [ [[CONV264]], [[COND_TRUE263]] ], [ [[CONV266]], [[COND_FALSE265]] ]
// SIMD-ONLY0-NEXT:    [[CONV269:%.*]] = trunc i32 [[COND268]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV269]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP125]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV270:%.*]] = sext i8 [[TMP126]] to i32
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV271:%.*]] = sext i8 [[TMP127]] to i32
// SIMD-ONLY0-NEXT:    [[CMP272:%.*]] = icmp slt i32 [[CONV270]], [[CONV271]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP272]], label [[COND_TRUE274:%.*]], label [[COND_FALSE276:%.*]]
// SIMD-ONLY0:       cond.true274:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV275:%.*]] = sext i8 [[TMP128]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278:%.*]]
// SIMD-ONLY0:       cond.false276:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV277:%.*]] = sext i8 [[TMP129]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278]]
// SIMD-ONLY0:       cond.end278:
// SIMD-ONLY0-NEXT:    [[COND279:%.*]] = phi i32 [ [[CONV275]], [[COND_TRUE274]] ], [ [[CONV277]], [[COND_FALSE276]] ]
// SIMD-ONLY0-NEXT:    [[CONV280:%.*]] = trunc i32 [[COND279]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV280]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP130]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV281:%.*]] = sext i8 [[TMP131]] to i32
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV282:%.*]] = sext i8 [[TMP132]] to i32
// SIMD-ONLY0-NEXT:    [[CMP283:%.*]] = icmp eq i32 [[CONV281]], [[CONV282]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP283]], label [[COND_TRUE285:%.*]], label [[COND_FALSE287:%.*]]
// SIMD-ONLY0:       cond.true285:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV286:%.*]] = sext i8 [[TMP133]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289:%.*]]
// SIMD-ONLY0:       cond.false287:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV288:%.*]] = sext i8 [[TMP134]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289]]
// SIMD-ONLY0:       cond.end289:
// SIMD-ONLY0-NEXT:    [[COND290:%.*]] = phi i32 [ [[CONV286]], [[COND_TRUE285]] ], [ [[CONV288]], [[COND_FALSE287]] ]
// SIMD-ONLY0-NEXT:    [[CONV291:%.*]] = trunc i32 [[COND290]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV291]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV292:%.*]] = sext i8 [[TMP135]] to i32
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV293:%.*]] = sext i8 [[TMP136]] to i32
// SIMD-ONLY0-NEXT:    [[CMP294:%.*]] = icmp sgt i32 [[CONV292]], [[CONV293]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP294]], label [[COND_TRUE296:%.*]], label [[COND_FALSE298:%.*]]
// SIMD-ONLY0:       cond.true296:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV297:%.*]] = sext i8 [[TMP137]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300:%.*]]
// SIMD-ONLY0:       cond.false298:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV299:%.*]] = sext i8 [[TMP138]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300]]
// SIMD-ONLY0:       cond.end300:
// SIMD-ONLY0-NEXT:    [[COND301:%.*]] = phi i32 [ [[CONV297]], [[COND_TRUE296]] ], [ [[CONV299]], [[COND_FALSE298]] ]
// SIMD-ONLY0-NEXT:    [[CONV302:%.*]] = trunc i32 [[COND301]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV302]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP139]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV303:%.*]] = sext i8 [[TMP140]] to i32
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV304:%.*]] = sext i8 [[TMP141]] to i32
// SIMD-ONLY0-NEXT:    [[CMP305:%.*]] = icmp slt i32 [[CONV303]], [[CONV304]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP305]], label [[COND_TRUE307:%.*]], label [[COND_FALSE309:%.*]]
// SIMD-ONLY0:       cond.true307:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV308:%.*]] = sext i8 [[TMP142]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311:%.*]]
// SIMD-ONLY0:       cond.false309:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV310:%.*]] = sext i8 [[TMP143]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311]]
// SIMD-ONLY0:       cond.end311:
// SIMD-ONLY0-NEXT:    [[COND312:%.*]] = phi i32 [ [[CONV308]], [[COND_TRUE307]] ], [ [[CONV310]], [[COND_FALSE309]] ]
// SIMD-ONLY0-NEXT:    [[CONV313:%.*]] = trunc i32 [[COND312]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV313]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP144]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV314:%.*]] = sext i8 [[TMP145]] to i32
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV315:%.*]] = sext i8 [[TMP146]] to i32
// SIMD-ONLY0-NEXT:    [[CMP316:%.*]] = icmp eq i32 [[CONV314]], [[CONV315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP316]], label [[COND_TRUE318:%.*]], label [[COND_FALSE320:%.*]]
// SIMD-ONLY0:       cond.true318:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV319:%.*]] = sext i8 [[TMP147]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322:%.*]]
// SIMD-ONLY0:       cond.false320:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV321:%.*]] = sext i8 [[TMP148]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322]]
// SIMD-ONLY0:       cond.end322:
// SIMD-ONLY0-NEXT:    [[COND323:%.*]] = phi i32 [ [[CONV319]], [[COND_TRUE318]] ], [ [[CONV321]], [[COND_FALSE320]] ]
// SIMD-ONLY0-NEXT:    [[CONV324:%.*]] = trunc i32 [[COND323]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV324]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP149]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP150]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV325:%.*]] = sext i8 [[TMP151]] to i32
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV326:%.*]] = sext i8 [[TMP152]] to i32
// SIMD-ONLY0-NEXT:    [[CMP327:%.*]] = icmp sgt i32 [[CONV325]], [[CONV326]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP327]], label [[COND_TRUE329:%.*]], label [[COND_FALSE331:%.*]]
// SIMD-ONLY0:       cond.true329:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV330:%.*]] = sext i8 [[TMP153]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333:%.*]]
// SIMD-ONLY0:       cond.false331:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV332:%.*]] = sext i8 [[TMP154]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333]]
// SIMD-ONLY0:       cond.end333:
// SIMD-ONLY0-NEXT:    [[COND334:%.*]] = phi i32 [ [[CONV330]], [[COND_TRUE329]] ], [ [[CONV332]], [[COND_FALSE331]] ]
// SIMD-ONLY0-NEXT:    [[CONV335:%.*]] = trunc i32 [[COND334]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV335]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP155]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV336:%.*]] = sext i8 [[TMP156]] to i32
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV337:%.*]] = sext i8 [[TMP157]] to i32
// SIMD-ONLY0-NEXT:    [[CMP338:%.*]] = icmp slt i32 [[CONV336]], [[CONV337]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP338]], label [[COND_TRUE340:%.*]], label [[COND_FALSE342:%.*]]
// SIMD-ONLY0:       cond.true340:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV341:%.*]] = sext i8 [[TMP158]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344:%.*]]
// SIMD-ONLY0:       cond.false342:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV343:%.*]] = sext i8 [[TMP159]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344]]
// SIMD-ONLY0:       cond.end344:
// SIMD-ONLY0-NEXT:    [[COND345:%.*]] = phi i32 [ [[CONV341]], [[COND_TRUE340]] ], [ [[CONV343]], [[COND_FALSE342]] ]
// SIMD-ONLY0-NEXT:    [[CONV346:%.*]] = trunc i32 [[COND345]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV346]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP160]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV347:%.*]] = sext i8 [[TMP161]] to i32
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV348:%.*]] = sext i8 [[TMP162]] to i32
// SIMD-ONLY0-NEXT:    [[CMP349:%.*]] = icmp eq i32 [[CONV347]], [[CONV348]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP349]], label [[COND_TRUE351:%.*]], label [[COND_FALSE353:%.*]]
// SIMD-ONLY0:       cond.true351:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV352:%.*]] = sext i8 [[TMP163]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355:%.*]]
// SIMD-ONLY0:       cond.false353:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV354:%.*]] = sext i8 [[TMP164]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355]]
// SIMD-ONLY0:       cond.end355:
// SIMD-ONLY0-NEXT:    [[COND356:%.*]] = phi i32 [ [[CONV352]], [[COND_TRUE351]] ], [ [[CONV354]], [[COND_FALSE353]] ]
// SIMD-ONLY0-NEXT:    [[CONV357:%.*]] = trunc i32 [[COND356]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV357]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV358:%.*]] = sext i8 [[TMP165]] to i32
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV359:%.*]] = sext i8 [[TMP166]] to i32
// SIMD-ONLY0-NEXT:    [[CMP360:%.*]] = icmp sgt i32 [[CONV358]], [[CONV359]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP360]], label [[COND_TRUE362:%.*]], label [[COND_FALSE364:%.*]]
// SIMD-ONLY0:       cond.true362:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV363:%.*]] = sext i8 [[TMP167]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366:%.*]]
// SIMD-ONLY0:       cond.false364:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV365:%.*]] = sext i8 [[TMP168]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366]]
// SIMD-ONLY0:       cond.end366:
// SIMD-ONLY0-NEXT:    [[COND367:%.*]] = phi i32 [ [[CONV363]], [[COND_TRUE362]] ], [ [[CONV365]], [[COND_FALSE364]] ]
// SIMD-ONLY0-NEXT:    [[CONV368:%.*]] = trunc i32 [[COND367]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV368]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP169]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV369:%.*]] = sext i8 [[TMP170]] to i32
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV370:%.*]] = sext i8 [[TMP171]] to i32
// SIMD-ONLY0-NEXT:    [[CMP371:%.*]] = icmp slt i32 [[CONV369]], [[CONV370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP371]], label [[COND_TRUE373:%.*]], label [[COND_FALSE375:%.*]]
// SIMD-ONLY0:       cond.true373:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV374:%.*]] = sext i8 [[TMP172]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377:%.*]]
// SIMD-ONLY0:       cond.false375:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV376:%.*]] = sext i8 [[TMP173]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377]]
// SIMD-ONLY0:       cond.end377:
// SIMD-ONLY0-NEXT:    [[COND378:%.*]] = phi i32 [ [[CONV374]], [[COND_TRUE373]] ], [ [[CONV376]], [[COND_FALSE375]] ]
// SIMD-ONLY0-NEXT:    [[CONV379:%.*]] = trunc i32 [[COND378]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV379]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP174]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV380:%.*]] = sext i8 [[TMP175]] to i32
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i8, ptr [[CE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV381:%.*]] = sext i8 [[TMP176]] to i32
// SIMD-ONLY0-NEXT:    [[CMP382:%.*]] = icmp eq i32 [[CONV380]], [[CONV381]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP382]], label [[COND_TRUE384:%.*]], label [[COND_FALSE386:%.*]]
// SIMD-ONLY0:       cond.true384:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i8, ptr [[CD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV385:%.*]] = sext i8 [[TMP177]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388:%.*]]
// SIMD-ONLY0:       cond.false386:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV387:%.*]] = sext i8 [[TMP178]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388]]
// SIMD-ONLY0:       cond.end388:
// SIMD-ONLY0-NEXT:    [[COND389:%.*]] = phi i32 [ [[CONV385]], [[COND_TRUE384]] ], [ [[CONV387]], [[COND_FALSE386]] ]
// SIMD-ONLY0-NEXT:    [[CONV390:%.*]] = trunc i32 [[COND389]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV390]], ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i8, ptr [[CX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP179]], ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i8, ptr [[CV]], align 1
// SIMD-ONLY0-NEXT:    ret i8 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @ucxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[UCX:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCV:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCE:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[UCD:%.*]] = alloca i8, align 1
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP0]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV:%.*]] = zext i8 [[TMP1]] to i32
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV1:%.*]] = zext i8 [[TMP2]] to i32
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV1]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV3:%.*]] = zext i8 [[TMP3]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV4:%.*]] = zext i8 [[TMP4]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[CONV3]], [[COND_TRUE]] ], [ [[CONV4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    [[CONV5:%.*]] = trunc i32 [[COND]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV5]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP5]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV6:%.*]] = zext i8 [[TMP6]] to i32
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV7:%.*]] = zext i8 [[TMP7]] to i32
// SIMD-ONLY0-NEXT:    [[CMP8:%.*]] = icmp slt i32 [[CONV6]], [[CONV7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP8]], label [[COND_TRUE10:%.*]], label [[COND_FALSE12:%.*]]
// SIMD-ONLY0:       cond.true10:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV11:%.*]] = zext i8 [[TMP8]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false12:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV13:%.*]] = zext i8 [[TMP9]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[CONV11]], [[COND_TRUE10]] ], [ [[CONV13]], [[COND_FALSE12]] ]
// SIMD-ONLY0-NEXT:    [[CONV16:%.*]] = trunc i32 [[COND15]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV16]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP10]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV17:%.*]] = zext i8 [[TMP11]] to i32
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV18:%.*]] = zext i8 [[TMP12]] to i32
// SIMD-ONLY0-NEXT:    [[CMP19:%.*]] = icmp eq i32 [[CONV17]], [[CONV18]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP19]], label [[COND_TRUE21:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true21:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV22:%.*]] = zext i8 [[TMP13]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV24:%.*]] = zext i8 [[TMP14]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25]]
// SIMD-ONLY0:       cond.end25:
// SIMD-ONLY0-NEXT:    [[COND26:%.*]] = phi i32 [ [[CONV22]], [[COND_TRUE21]] ], [ [[CONV24]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    [[CONV27:%.*]] = trunc i32 [[COND26]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV27]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV28:%.*]] = zext i8 [[TMP15]] to i32
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV29:%.*]] = zext i8 [[TMP16]] to i32
// SIMD-ONLY0-NEXT:    [[CMP30:%.*]] = icmp sgt i32 [[CONV28]], [[CONV29]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP30]], label [[COND_TRUE32:%.*]], label [[COND_FALSE34:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV33:%.*]] = zext i8 [[TMP17]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36:%.*]]
// SIMD-ONLY0:       cond.false34:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV35:%.*]] = zext i8 [[TMP18]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36]]
// SIMD-ONLY0:       cond.end36:
// SIMD-ONLY0-NEXT:    [[COND37:%.*]] = phi i32 [ [[CONV33]], [[COND_TRUE32]] ], [ [[CONV35]], [[COND_FALSE34]] ]
// SIMD-ONLY0-NEXT:    [[CONV38:%.*]] = trunc i32 [[COND37]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV38]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP19]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV39:%.*]] = zext i8 [[TMP20]] to i32
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV40:%.*]] = zext i8 [[TMP21]] to i32
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp slt i32 [[CONV39]], [[CONV40]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE43:%.*]], label [[COND_FALSE45:%.*]]
// SIMD-ONLY0:       cond.true43:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV44:%.*]] = zext i8 [[TMP22]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47:%.*]]
// SIMD-ONLY0:       cond.false45:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV46:%.*]] = zext i8 [[TMP23]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47]]
// SIMD-ONLY0:       cond.end47:
// SIMD-ONLY0-NEXT:    [[COND48:%.*]] = phi i32 [ [[CONV44]], [[COND_TRUE43]] ], [ [[CONV46]], [[COND_FALSE45]] ]
// SIMD-ONLY0-NEXT:    [[CONV49:%.*]] = trunc i32 [[COND48]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV49]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP24]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV50:%.*]] = zext i8 [[TMP25]] to i32
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV51:%.*]] = zext i8 [[TMP26]] to i32
// SIMD-ONLY0-NEXT:    [[CMP52:%.*]] = icmp eq i32 [[CONV50]], [[CONV51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP52]], label [[COND_TRUE54:%.*]], label [[COND_FALSE56:%.*]]
// SIMD-ONLY0:       cond.true54:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV55:%.*]] = zext i8 [[TMP27]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58:%.*]]
// SIMD-ONLY0:       cond.false56:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV57:%.*]] = zext i8 [[TMP28]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58]]
// SIMD-ONLY0:       cond.end58:
// SIMD-ONLY0-NEXT:    [[COND59:%.*]] = phi i32 [ [[CONV55]], [[COND_TRUE54]] ], [ [[CONV57]], [[COND_FALSE56]] ]
// SIMD-ONLY0-NEXT:    [[CONV60:%.*]] = trunc i32 [[COND59]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV60]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP29]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP30]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV61:%.*]] = zext i8 [[TMP31]] to i32
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV62:%.*]] = zext i8 [[TMP32]] to i32
// SIMD-ONLY0-NEXT:    [[CMP63:%.*]] = icmp sgt i32 [[CONV61]], [[CONV62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP63]], label [[COND_TRUE65:%.*]], label [[COND_FALSE67:%.*]]
// SIMD-ONLY0:       cond.true65:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV66:%.*]] = zext i8 [[TMP33]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false67:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV68:%.*]] = zext i8 [[TMP34]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[CONV66]], [[COND_TRUE65]] ], [ [[CONV68]], [[COND_FALSE67]] ]
// SIMD-ONLY0-NEXT:    [[CONV71:%.*]] = trunc i32 [[COND70]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV71]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP35]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV72:%.*]] = zext i8 [[TMP36]] to i32
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV73:%.*]] = zext i8 [[TMP37]] to i32
// SIMD-ONLY0-NEXT:    [[CMP74:%.*]] = icmp slt i32 [[CONV72]], [[CONV73]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP74]], label [[COND_TRUE76:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true76:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV77:%.*]] = zext i8 [[TMP38]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV79:%.*]] = zext i8 [[TMP39]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80]]
// SIMD-ONLY0:       cond.end80:
// SIMD-ONLY0-NEXT:    [[COND81:%.*]] = phi i32 [ [[CONV77]], [[COND_TRUE76]] ], [ [[CONV79]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    [[CONV82:%.*]] = trunc i32 [[COND81]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV82]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP40]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV83:%.*]] = zext i8 [[TMP41]] to i32
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV84:%.*]] = zext i8 [[TMP42]] to i32
// SIMD-ONLY0-NEXT:    [[CMP85:%.*]] = icmp eq i32 [[CONV83]], [[CONV84]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP85]], label [[COND_TRUE87:%.*]], label [[COND_FALSE89:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV88:%.*]] = zext i8 [[TMP43]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91:%.*]]
// SIMD-ONLY0:       cond.false89:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV90:%.*]] = zext i8 [[TMP44]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91]]
// SIMD-ONLY0:       cond.end91:
// SIMD-ONLY0-NEXT:    [[COND92:%.*]] = phi i32 [ [[CONV88]], [[COND_TRUE87]] ], [ [[CONV90]], [[COND_FALSE89]] ]
// SIMD-ONLY0-NEXT:    [[CONV93:%.*]] = trunc i32 [[COND92]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV93]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV94:%.*]] = zext i8 [[TMP45]] to i32
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV95:%.*]] = zext i8 [[TMP46]] to i32
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp sgt i32 [[CONV94]], [[CONV95]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE98:%.*]], label [[COND_FALSE100:%.*]]
// SIMD-ONLY0:       cond.true98:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV99:%.*]] = zext i8 [[TMP47]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102:%.*]]
// SIMD-ONLY0:       cond.false100:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV101:%.*]] = zext i8 [[TMP48]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102]]
// SIMD-ONLY0:       cond.end102:
// SIMD-ONLY0-NEXT:    [[COND103:%.*]] = phi i32 [ [[CONV99]], [[COND_TRUE98]] ], [ [[CONV101]], [[COND_FALSE100]] ]
// SIMD-ONLY0-NEXT:    [[CONV104:%.*]] = trunc i32 [[COND103]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV104]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP49]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV105:%.*]] = zext i8 [[TMP50]] to i32
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV106:%.*]] = zext i8 [[TMP51]] to i32
// SIMD-ONLY0-NEXT:    [[CMP107:%.*]] = icmp slt i32 [[CONV105]], [[CONV106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP107]], label [[COND_TRUE109:%.*]], label [[COND_FALSE111:%.*]]
// SIMD-ONLY0:       cond.true109:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV110:%.*]] = zext i8 [[TMP52]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113:%.*]]
// SIMD-ONLY0:       cond.false111:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV112:%.*]] = zext i8 [[TMP53]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113]]
// SIMD-ONLY0:       cond.end113:
// SIMD-ONLY0-NEXT:    [[COND114:%.*]] = phi i32 [ [[CONV110]], [[COND_TRUE109]] ], [ [[CONV112]], [[COND_FALSE111]] ]
// SIMD-ONLY0-NEXT:    [[CONV115:%.*]] = trunc i32 [[COND114]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV115]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP54]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV116:%.*]] = zext i8 [[TMP55]] to i32
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV117:%.*]] = zext i8 [[TMP56]] to i32
// SIMD-ONLY0-NEXT:    [[CMP118:%.*]] = icmp eq i32 [[CONV116]], [[CONV117]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP118]], label [[COND_TRUE120:%.*]], label [[COND_FALSE122:%.*]]
// SIMD-ONLY0:       cond.true120:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV121:%.*]] = zext i8 [[TMP57]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false122:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV123:%.*]] = zext i8 [[TMP58]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i32 [ [[CONV121]], [[COND_TRUE120]] ], [ [[CONV123]], [[COND_FALSE122]] ]
// SIMD-ONLY0-NEXT:    [[CONV126:%.*]] = trunc i32 [[COND125]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV126]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP59]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP60]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV127:%.*]] = zext i8 [[TMP61]] to i32
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV128:%.*]] = zext i8 [[TMP62]] to i32
// SIMD-ONLY0-NEXT:    [[CMP129:%.*]] = icmp sgt i32 [[CONV127]], [[CONV128]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP129]], label [[COND_TRUE131:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true131:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV132:%.*]] = zext i8 [[TMP63]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV134:%.*]] = zext i8 [[TMP64]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135]]
// SIMD-ONLY0:       cond.end135:
// SIMD-ONLY0-NEXT:    [[COND136:%.*]] = phi i32 [ [[CONV132]], [[COND_TRUE131]] ], [ [[CONV134]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    [[CONV137:%.*]] = trunc i32 [[COND136]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV137]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP65]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV138:%.*]] = zext i8 [[TMP66]] to i32
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV139:%.*]] = zext i8 [[TMP67]] to i32
// SIMD-ONLY0-NEXT:    [[CMP140:%.*]] = icmp slt i32 [[CONV138]], [[CONV139]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP140]], label [[COND_TRUE142:%.*]], label [[COND_FALSE144:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV143:%.*]] = zext i8 [[TMP68]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146:%.*]]
// SIMD-ONLY0:       cond.false144:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV145:%.*]] = zext i8 [[TMP69]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146]]
// SIMD-ONLY0:       cond.end146:
// SIMD-ONLY0-NEXT:    [[COND147:%.*]] = phi i32 [ [[CONV143]], [[COND_TRUE142]] ], [ [[CONV145]], [[COND_FALSE144]] ]
// SIMD-ONLY0-NEXT:    [[CONV148:%.*]] = trunc i32 [[COND147]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV148]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP70]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV149:%.*]] = zext i8 [[TMP71]] to i32
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV150:%.*]] = zext i8 [[TMP72]] to i32
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp eq i32 [[CONV149]], [[CONV150]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE153:%.*]], label [[COND_FALSE155:%.*]]
// SIMD-ONLY0:       cond.true153:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV154:%.*]] = zext i8 [[TMP73]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157:%.*]]
// SIMD-ONLY0:       cond.false155:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV156:%.*]] = zext i8 [[TMP74]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157]]
// SIMD-ONLY0:       cond.end157:
// SIMD-ONLY0-NEXT:    [[COND158:%.*]] = phi i32 [ [[CONV154]], [[COND_TRUE153]] ], [ [[CONV156]], [[COND_FALSE155]] ]
// SIMD-ONLY0-NEXT:    [[CONV159:%.*]] = trunc i32 [[COND158]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV159]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV160:%.*]] = zext i8 [[TMP75]] to i32
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV161:%.*]] = zext i8 [[TMP76]] to i32
// SIMD-ONLY0-NEXT:    [[CMP162:%.*]] = icmp sgt i32 [[CONV160]], [[CONV161]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP162]], label [[COND_TRUE164:%.*]], label [[COND_FALSE166:%.*]]
// SIMD-ONLY0:       cond.true164:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV165:%.*]] = zext i8 [[TMP77]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168:%.*]]
// SIMD-ONLY0:       cond.false166:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV167:%.*]] = zext i8 [[TMP78]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168]]
// SIMD-ONLY0:       cond.end168:
// SIMD-ONLY0-NEXT:    [[COND169:%.*]] = phi i32 [ [[CONV165]], [[COND_TRUE164]] ], [ [[CONV167]], [[COND_FALSE166]] ]
// SIMD-ONLY0-NEXT:    [[CONV170:%.*]] = trunc i32 [[COND169]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV170]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP79]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV171:%.*]] = zext i8 [[TMP80]] to i32
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV172:%.*]] = zext i8 [[TMP81]] to i32
// SIMD-ONLY0-NEXT:    [[CMP173:%.*]] = icmp slt i32 [[CONV171]], [[CONV172]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP173]], label [[COND_TRUE175:%.*]], label [[COND_FALSE177:%.*]]
// SIMD-ONLY0:       cond.true175:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV176:%.*]] = zext i8 [[TMP82]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179:%.*]]
// SIMD-ONLY0:       cond.false177:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV178:%.*]] = zext i8 [[TMP83]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179]]
// SIMD-ONLY0:       cond.end179:
// SIMD-ONLY0-NEXT:    [[COND180:%.*]] = phi i32 [ [[CONV176]], [[COND_TRUE175]] ], [ [[CONV178]], [[COND_FALSE177]] ]
// SIMD-ONLY0-NEXT:    [[CONV181:%.*]] = trunc i32 [[COND180]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV181]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP84]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV182:%.*]] = zext i8 [[TMP85]] to i32
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV183:%.*]] = zext i8 [[TMP86]] to i32
// SIMD-ONLY0-NEXT:    [[CMP184:%.*]] = icmp eq i32 [[CONV182]], [[CONV183]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP184]], label [[COND_TRUE186:%.*]], label [[COND_FALSE188:%.*]]
// SIMD-ONLY0:       cond.true186:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV187:%.*]] = zext i8 [[TMP87]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190:%.*]]
// SIMD-ONLY0:       cond.false188:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV189:%.*]] = zext i8 [[TMP88]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190]]
// SIMD-ONLY0:       cond.end190:
// SIMD-ONLY0-NEXT:    [[COND191:%.*]] = phi i32 [ [[CONV187]], [[COND_TRUE186]] ], [ [[CONV189]], [[COND_FALSE188]] ]
// SIMD-ONLY0-NEXT:    [[CONV192:%.*]] = trunc i32 [[COND191]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV192]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP89]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP90]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV193:%.*]] = zext i8 [[TMP91]] to i32
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV194:%.*]] = zext i8 [[TMP92]] to i32
// SIMD-ONLY0-NEXT:    [[CMP195:%.*]] = icmp sgt i32 [[CONV193]], [[CONV194]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP195]], label [[COND_TRUE197:%.*]], label [[COND_FALSE199:%.*]]
// SIMD-ONLY0:       cond.true197:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV198:%.*]] = zext i8 [[TMP93]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201:%.*]]
// SIMD-ONLY0:       cond.false199:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV200:%.*]] = zext i8 [[TMP94]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201]]
// SIMD-ONLY0:       cond.end201:
// SIMD-ONLY0-NEXT:    [[COND202:%.*]] = phi i32 [ [[CONV198]], [[COND_TRUE197]] ], [ [[CONV200]], [[COND_FALSE199]] ]
// SIMD-ONLY0-NEXT:    [[CONV203:%.*]] = trunc i32 [[COND202]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV203]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP95]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV204:%.*]] = zext i8 [[TMP96]] to i32
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV205:%.*]] = zext i8 [[TMP97]] to i32
// SIMD-ONLY0-NEXT:    [[CMP206:%.*]] = icmp slt i32 [[CONV204]], [[CONV205]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP206]], label [[COND_TRUE208:%.*]], label [[COND_FALSE210:%.*]]
// SIMD-ONLY0:       cond.true208:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV209:%.*]] = zext i8 [[TMP98]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212:%.*]]
// SIMD-ONLY0:       cond.false210:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV211:%.*]] = zext i8 [[TMP99]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212]]
// SIMD-ONLY0:       cond.end212:
// SIMD-ONLY0-NEXT:    [[COND213:%.*]] = phi i32 [ [[CONV209]], [[COND_TRUE208]] ], [ [[CONV211]], [[COND_FALSE210]] ]
// SIMD-ONLY0-NEXT:    [[CONV214:%.*]] = trunc i32 [[COND213]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV214]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP100]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV215:%.*]] = zext i8 [[TMP101]] to i32
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV216:%.*]] = zext i8 [[TMP102]] to i32
// SIMD-ONLY0-NEXT:    [[CMP217:%.*]] = icmp eq i32 [[CONV215]], [[CONV216]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP217]], label [[COND_TRUE219:%.*]], label [[COND_FALSE221:%.*]]
// SIMD-ONLY0:       cond.true219:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV220:%.*]] = zext i8 [[TMP103]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223:%.*]]
// SIMD-ONLY0:       cond.false221:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV222:%.*]] = zext i8 [[TMP104]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223]]
// SIMD-ONLY0:       cond.end223:
// SIMD-ONLY0-NEXT:    [[COND224:%.*]] = phi i32 [ [[CONV220]], [[COND_TRUE219]] ], [ [[CONV222]], [[COND_FALSE221]] ]
// SIMD-ONLY0-NEXT:    [[CONV225:%.*]] = trunc i32 [[COND224]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV225]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV226:%.*]] = zext i8 [[TMP105]] to i32
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV227:%.*]] = zext i8 [[TMP106]] to i32
// SIMD-ONLY0-NEXT:    [[CMP228:%.*]] = icmp sgt i32 [[CONV226]], [[CONV227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP228]], label [[COND_TRUE230:%.*]], label [[COND_FALSE232:%.*]]
// SIMD-ONLY0:       cond.true230:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV231:%.*]] = zext i8 [[TMP107]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234:%.*]]
// SIMD-ONLY0:       cond.false232:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV233:%.*]] = zext i8 [[TMP108]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234]]
// SIMD-ONLY0:       cond.end234:
// SIMD-ONLY0-NEXT:    [[COND235:%.*]] = phi i32 [ [[CONV231]], [[COND_TRUE230]] ], [ [[CONV233]], [[COND_FALSE232]] ]
// SIMD-ONLY0-NEXT:    [[CONV236:%.*]] = trunc i32 [[COND235]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV236]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP109]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV237:%.*]] = zext i8 [[TMP110]] to i32
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV238:%.*]] = zext i8 [[TMP111]] to i32
// SIMD-ONLY0-NEXT:    [[CMP239:%.*]] = icmp slt i32 [[CONV237]], [[CONV238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP239]], label [[COND_TRUE241:%.*]], label [[COND_FALSE243:%.*]]
// SIMD-ONLY0:       cond.true241:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV242:%.*]] = zext i8 [[TMP112]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245:%.*]]
// SIMD-ONLY0:       cond.false243:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV244:%.*]] = zext i8 [[TMP113]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245]]
// SIMD-ONLY0:       cond.end245:
// SIMD-ONLY0-NEXT:    [[COND246:%.*]] = phi i32 [ [[CONV242]], [[COND_TRUE241]] ], [ [[CONV244]], [[COND_FALSE243]] ]
// SIMD-ONLY0-NEXT:    [[CONV247:%.*]] = trunc i32 [[COND246]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV247]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP114]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV248:%.*]] = zext i8 [[TMP115]] to i32
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV249:%.*]] = zext i8 [[TMP116]] to i32
// SIMD-ONLY0-NEXT:    [[CMP250:%.*]] = icmp eq i32 [[CONV248]], [[CONV249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP250]], label [[COND_TRUE252:%.*]], label [[COND_FALSE254:%.*]]
// SIMD-ONLY0:       cond.true252:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV253:%.*]] = zext i8 [[TMP117]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256:%.*]]
// SIMD-ONLY0:       cond.false254:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV255:%.*]] = zext i8 [[TMP118]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256]]
// SIMD-ONLY0:       cond.end256:
// SIMD-ONLY0-NEXT:    [[COND257:%.*]] = phi i32 [ [[CONV253]], [[COND_TRUE252]] ], [ [[CONV255]], [[COND_FALSE254]] ]
// SIMD-ONLY0-NEXT:    [[CONV258:%.*]] = trunc i32 [[COND257]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV258]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP119]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP120]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV259:%.*]] = zext i8 [[TMP121]] to i32
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV260:%.*]] = zext i8 [[TMP122]] to i32
// SIMD-ONLY0-NEXT:    [[CMP261:%.*]] = icmp sgt i32 [[CONV259]], [[CONV260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP261]], label [[COND_TRUE263:%.*]], label [[COND_FALSE265:%.*]]
// SIMD-ONLY0:       cond.true263:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV264:%.*]] = zext i8 [[TMP123]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267:%.*]]
// SIMD-ONLY0:       cond.false265:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV266:%.*]] = zext i8 [[TMP124]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267]]
// SIMD-ONLY0:       cond.end267:
// SIMD-ONLY0-NEXT:    [[COND268:%.*]] = phi i32 [ [[CONV264]], [[COND_TRUE263]] ], [ [[CONV266]], [[COND_FALSE265]] ]
// SIMD-ONLY0-NEXT:    [[CONV269:%.*]] = trunc i32 [[COND268]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV269]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP125]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV270:%.*]] = zext i8 [[TMP126]] to i32
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV271:%.*]] = zext i8 [[TMP127]] to i32
// SIMD-ONLY0-NEXT:    [[CMP272:%.*]] = icmp slt i32 [[CONV270]], [[CONV271]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP272]], label [[COND_TRUE274:%.*]], label [[COND_FALSE276:%.*]]
// SIMD-ONLY0:       cond.true274:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV275:%.*]] = zext i8 [[TMP128]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278:%.*]]
// SIMD-ONLY0:       cond.false276:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV277:%.*]] = zext i8 [[TMP129]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278]]
// SIMD-ONLY0:       cond.end278:
// SIMD-ONLY0-NEXT:    [[COND279:%.*]] = phi i32 [ [[CONV275]], [[COND_TRUE274]] ], [ [[CONV277]], [[COND_FALSE276]] ]
// SIMD-ONLY0-NEXT:    [[CONV280:%.*]] = trunc i32 [[COND279]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV280]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP130]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV281:%.*]] = zext i8 [[TMP131]] to i32
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV282:%.*]] = zext i8 [[TMP132]] to i32
// SIMD-ONLY0-NEXT:    [[CMP283:%.*]] = icmp eq i32 [[CONV281]], [[CONV282]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP283]], label [[COND_TRUE285:%.*]], label [[COND_FALSE287:%.*]]
// SIMD-ONLY0:       cond.true285:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV286:%.*]] = zext i8 [[TMP133]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289:%.*]]
// SIMD-ONLY0:       cond.false287:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV288:%.*]] = zext i8 [[TMP134]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289]]
// SIMD-ONLY0:       cond.end289:
// SIMD-ONLY0-NEXT:    [[COND290:%.*]] = phi i32 [ [[CONV286]], [[COND_TRUE285]] ], [ [[CONV288]], [[COND_FALSE287]] ]
// SIMD-ONLY0-NEXT:    [[CONV291:%.*]] = trunc i32 [[COND290]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV291]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV292:%.*]] = zext i8 [[TMP135]] to i32
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV293:%.*]] = zext i8 [[TMP136]] to i32
// SIMD-ONLY0-NEXT:    [[CMP294:%.*]] = icmp sgt i32 [[CONV292]], [[CONV293]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP294]], label [[COND_TRUE296:%.*]], label [[COND_FALSE298:%.*]]
// SIMD-ONLY0:       cond.true296:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV297:%.*]] = zext i8 [[TMP137]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300:%.*]]
// SIMD-ONLY0:       cond.false298:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV299:%.*]] = zext i8 [[TMP138]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300]]
// SIMD-ONLY0:       cond.end300:
// SIMD-ONLY0-NEXT:    [[COND301:%.*]] = phi i32 [ [[CONV297]], [[COND_TRUE296]] ], [ [[CONV299]], [[COND_FALSE298]] ]
// SIMD-ONLY0-NEXT:    [[CONV302:%.*]] = trunc i32 [[COND301]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV302]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP139]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV303:%.*]] = zext i8 [[TMP140]] to i32
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV304:%.*]] = zext i8 [[TMP141]] to i32
// SIMD-ONLY0-NEXT:    [[CMP305:%.*]] = icmp slt i32 [[CONV303]], [[CONV304]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP305]], label [[COND_TRUE307:%.*]], label [[COND_FALSE309:%.*]]
// SIMD-ONLY0:       cond.true307:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV308:%.*]] = zext i8 [[TMP142]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311:%.*]]
// SIMD-ONLY0:       cond.false309:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV310:%.*]] = zext i8 [[TMP143]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311]]
// SIMD-ONLY0:       cond.end311:
// SIMD-ONLY0-NEXT:    [[COND312:%.*]] = phi i32 [ [[CONV308]], [[COND_TRUE307]] ], [ [[CONV310]], [[COND_FALSE309]] ]
// SIMD-ONLY0-NEXT:    [[CONV313:%.*]] = trunc i32 [[COND312]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV313]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP144]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV314:%.*]] = zext i8 [[TMP145]] to i32
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV315:%.*]] = zext i8 [[TMP146]] to i32
// SIMD-ONLY0-NEXT:    [[CMP316:%.*]] = icmp eq i32 [[CONV314]], [[CONV315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP316]], label [[COND_TRUE318:%.*]], label [[COND_FALSE320:%.*]]
// SIMD-ONLY0:       cond.true318:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV319:%.*]] = zext i8 [[TMP147]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322:%.*]]
// SIMD-ONLY0:       cond.false320:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV321:%.*]] = zext i8 [[TMP148]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322]]
// SIMD-ONLY0:       cond.end322:
// SIMD-ONLY0-NEXT:    [[COND323:%.*]] = phi i32 [ [[CONV319]], [[COND_TRUE318]] ], [ [[CONV321]], [[COND_FALSE320]] ]
// SIMD-ONLY0-NEXT:    [[CONV324:%.*]] = trunc i32 [[COND323]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV324]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP149]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP150]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV325:%.*]] = zext i8 [[TMP151]] to i32
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV326:%.*]] = zext i8 [[TMP152]] to i32
// SIMD-ONLY0-NEXT:    [[CMP327:%.*]] = icmp sgt i32 [[CONV325]], [[CONV326]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP327]], label [[COND_TRUE329:%.*]], label [[COND_FALSE331:%.*]]
// SIMD-ONLY0:       cond.true329:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV330:%.*]] = zext i8 [[TMP153]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333:%.*]]
// SIMD-ONLY0:       cond.false331:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV332:%.*]] = zext i8 [[TMP154]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333]]
// SIMD-ONLY0:       cond.end333:
// SIMD-ONLY0-NEXT:    [[COND334:%.*]] = phi i32 [ [[CONV330]], [[COND_TRUE329]] ], [ [[CONV332]], [[COND_FALSE331]] ]
// SIMD-ONLY0-NEXT:    [[CONV335:%.*]] = trunc i32 [[COND334]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV335]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP155]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV336:%.*]] = zext i8 [[TMP156]] to i32
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV337:%.*]] = zext i8 [[TMP157]] to i32
// SIMD-ONLY0-NEXT:    [[CMP338:%.*]] = icmp slt i32 [[CONV336]], [[CONV337]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP338]], label [[COND_TRUE340:%.*]], label [[COND_FALSE342:%.*]]
// SIMD-ONLY0:       cond.true340:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV341:%.*]] = zext i8 [[TMP158]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344:%.*]]
// SIMD-ONLY0:       cond.false342:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV343:%.*]] = zext i8 [[TMP159]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344]]
// SIMD-ONLY0:       cond.end344:
// SIMD-ONLY0-NEXT:    [[COND345:%.*]] = phi i32 [ [[CONV341]], [[COND_TRUE340]] ], [ [[CONV343]], [[COND_FALSE342]] ]
// SIMD-ONLY0-NEXT:    [[CONV346:%.*]] = trunc i32 [[COND345]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV346]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP160]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV347:%.*]] = zext i8 [[TMP161]] to i32
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV348:%.*]] = zext i8 [[TMP162]] to i32
// SIMD-ONLY0-NEXT:    [[CMP349:%.*]] = icmp eq i32 [[CONV347]], [[CONV348]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP349]], label [[COND_TRUE351:%.*]], label [[COND_FALSE353:%.*]]
// SIMD-ONLY0:       cond.true351:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV352:%.*]] = zext i8 [[TMP163]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355:%.*]]
// SIMD-ONLY0:       cond.false353:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV354:%.*]] = zext i8 [[TMP164]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355]]
// SIMD-ONLY0:       cond.end355:
// SIMD-ONLY0-NEXT:    [[COND356:%.*]] = phi i32 [ [[CONV352]], [[COND_TRUE351]] ], [ [[CONV354]], [[COND_FALSE353]] ]
// SIMD-ONLY0-NEXT:    [[CONV357:%.*]] = trunc i32 [[COND356]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV357]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV358:%.*]] = zext i8 [[TMP165]] to i32
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV359:%.*]] = zext i8 [[TMP166]] to i32
// SIMD-ONLY0-NEXT:    [[CMP360:%.*]] = icmp sgt i32 [[CONV358]], [[CONV359]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP360]], label [[COND_TRUE362:%.*]], label [[COND_FALSE364:%.*]]
// SIMD-ONLY0:       cond.true362:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV363:%.*]] = zext i8 [[TMP167]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366:%.*]]
// SIMD-ONLY0:       cond.false364:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV365:%.*]] = zext i8 [[TMP168]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366]]
// SIMD-ONLY0:       cond.end366:
// SIMD-ONLY0-NEXT:    [[COND367:%.*]] = phi i32 [ [[CONV363]], [[COND_TRUE362]] ], [ [[CONV365]], [[COND_FALSE364]] ]
// SIMD-ONLY0-NEXT:    [[CONV368:%.*]] = trunc i32 [[COND367]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV368]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP169]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV369:%.*]] = zext i8 [[TMP170]] to i32
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV370:%.*]] = zext i8 [[TMP171]] to i32
// SIMD-ONLY0-NEXT:    [[CMP371:%.*]] = icmp slt i32 [[CONV369]], [[CONV370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP371]], label [[COND_TRUE373:%.*]], label [[COND_FALSE375:%.*]]
// SIMD-ONLY0:       cond.true373:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV374:%.*]] = zext i8 [[TMP172]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377:%.*]]
// SIMD-ONLY0:       cond.false375:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV376:%.*]] = zext i8 [[TMP173]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377]]
// SIMD-ONLY0:       cond.end377:
// SIMD-ONLY0-NEXT:    [[COND378:%.*]] = phi i32 [ [[CONV374]], [[COND_TRUE373]] ], [ [[CONV376]], [[COND_FALSE375]] ]
// SIMD-ONLY0-NEXT:    [[CONV379:%.*]] = trunc i32 [[COND378]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV379]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP174]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV380:%.*]] = zext i8 [[TMP175]] to i32
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i8, ptr [[UCE]], align 1
// SIMD-ONLY0-NEXT:    [[CONV381:%.*]] = zext i8 [[TMP176]] to i32
// SIMD-ONLY0-NEXT:    [[CMP382:%.*]] = icmp eq i32 [[CONV380]], [[CONV381]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP382]], label [[COND_TRUE384:%.*]], label [[COND_FALSE386:%.*]]
// SIMD-ONLY0:       cond.true384:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i8, ptr [[UCD]], align 1
// SIMD-ONLY0-NEXT:    [[CONV385:%.*]] = zext i8 [[TMP177]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388:%.*]]
// SIMD-ONLY0:       cond.false386:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[CONV387:%.*]] = zext i8 [[TMP178]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388]]
// SIMD-ONLY0:       cond.end388:
// SIMD-ONLY0-NEXT:    [[COND389:%.*]] = phi i32 [ [[CONV385]], [[COND_TRUE384]] ], [ [[CONV387]], [[COND_FALSE386]] ]
// SIMD-ONLY0-NEXT:    [[CONV390:%.*]] = trunc i32 [[COND389]] to i8
// SIMD-ONLY0-NEXT:    store i8 [[CONV390]], ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i8, ptr [[UCX]], align 1
// SIMD-ONLY0-NEXT:    store i8 [[TMP179]], ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i8, ptr [[UCV]], align 1
// SIMD-ONLY0-NEXT:    ret i8 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @sxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[SX:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SV:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SE:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[SD:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP0]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV:%.*]] = sext i16 [[TMP1]] to i32
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1:%.*]] = sext i16 [[TMP2]] to i32
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV1]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV3:%.*]] = sext i16 [[TMP3]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV4:%.*]] = sext i16 [[TMP4]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[CONV3]], [[COND_TRUE]] ], [ [[CONV4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    [[CONV5:%.*]] = trunc i32 [[COND]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV5]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP5]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV6:%.*]] = sext i16 [[TMP6]] to i32
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV7:%.*]] = sext i16 [[TMP7]] to i32
// SIMD-ONLY0-NEXT:    [[CMP8:%.*]] = icmp slt i32 [[CONV6]], [[CONV7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP8]], label [[COND_TRUE10:%.*]], label [[COND_FALSE12:%.*]]
// SIMD-ONLY0:       cond.true10:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV11:%.*]] = sext i16 [[TMP8]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false12:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV13:%.*]] = sext i16 [[TMP9]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[CONV11]], [[COND_TRUE10]] ], [ [[CONV13]], [[COND_FALSE12]] ]
// SIMD-ONLY0-NEXT:    [[CONV16:%.*]] = trunc i32 [[COND15]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV16]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP10]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV17:%.*]] = sext i16 [[TMP11]] to i32
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV18:%.*]] = sext i16 [[TMP12]] to i32
// SIMD-ONLY0-NEXT:    [[CMP19:%.*]] = icmp eq i32 [[CONV17]], [[CONV18]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP19]], label [[COND_TRUE21:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true21:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV22:%.*]] = sext i16 [[TMP13]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV24:%.*]] = sext i16 [[TMP14]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25]]
// SIMD-ONLY0:       cond.end25:
// SIMD-ONLY0-NEXT:    [[COND26:%.*]] = phi i32 [ [[CONV22]], [[COND_TRUE21]] ], [ [[CONV24]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    [[CONV27:%.*]] = trunc i32 [[COND26]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV27]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV28:%.*]] = sext i16 [[TMP15]] to i32
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV29:%.*]] = sext i16 [[TMP16]] to i32
// SIMD-ONLY0-NEXT:    [[CMP30:%.*]] = icmp sgt i32 [[CONV28]], [[CONV29]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP30]], label [[COND_TRUE32:%.*]], label [[COND_FALSE34:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV33:%.*]] = sext i16 [[TMP17]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36:%.*]]
// SIMD-ONLY0:       cond.false34:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV35:%.*]] = sext i16 [[TMP18]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36]]
// SIMD-ONLY0:       cond.end36:
// SIMD-ONLY0-NEXT:    [[COND37:%.*]] = phi i32 [ [[CONV33]], [[COND_TRUE32]] ], [ [[CONV35]], [[COND_FALSE34]] ]
// SIMD-ONLY0-NEXT:    [[CONV38:%.*]] = trunc i32 [[COND37]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV38]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP19]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV39:%.*]] = sext i16 [[TMP20]] to i32
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV40:%.*]] = sext i16 [[TMP21]] to i32
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp slt i32 [[CONV39]], [[CONV40]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE43:%.*]], label [[COND_FALSE45:%.*]]
// SIMD-ONLY0:       cond.true43:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV44:%.*]] = sext i16 [[TMP22]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47:%.*]]
// SIMD-ONLY0:       cond.false45:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV46:%.*]] = sext i16 [[TMP23]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47]]
// SIMD-ONLY0:       cond.end47:
// SIMD-ONLY0-NEXT:    [[COND48:%.*]] = phi i32 [ [[CONV44]], [[COND_TRUE43]] ], [ [[CONV46]], [[COND_FALSE45]] ]
// SIMD-ONLY0-NEXT:    [[CONV49:%.*]] = trunc i32 [[COND48]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV49]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP24]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV50:%.*]] = sext i16 [[TMP25]] to i32
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV51:%.*]] = sext i16 [[TMP26]] to i32
// SIMD-ONLY0-NEXT:    [[CMP52:%.*]] = icmp eq i32 [[CONV50]], [[CONV51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP52]], label [[COND_TRUE54:%.*]], label [[COND_FALSE56:%.*]]
// SIMD-ONLY0:       cond.true54:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV55:%.*]] = sext i16 [[TMP27]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58:%.*]]
// SIMD-ONLY0:       cond.false56:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV57:%.*]] = sext i16 [[TMP28]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58]]
// SIMD-ONLY0:       cond.end58:
// SIMD-ONLY0-NEXT:    [[COND59:%.*]] = phi i32 [ [[CONV55]], [[COND_TRUE54]] ], [ [[CONV57]], [[COND_FALSE56]] ]
// SIMD-ONLY0-NEXT:    [[CONV60:%.*]] = trunc i32 [[COND59]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV60]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP29]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP30]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV61:%.*]] = sext i16 [[TMP31]] to i32
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV62:%.*]] = sext i16 [[TMP32]] to i32
// SIMD-ONLY0-NEXT:    [[CMP63:%.*]] = icmp sgt i32 [[CONV61]], [[CONV62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP63]], label [[COND_TRUE65:%.*]], label [[COND_FALSE67:%.*]]
// SIMD-ONLY0:       cond.true65:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV66:%.*]] = sext i16 [[TMP33]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false67:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV68:%.*]] = sext i16 [[TMP34]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[CONV66]], [[COND_TRUE65]] ], [ [[CONV68]], [[COND_FALSE67]] ]
// SIMD-ONLY0-NEXT:    [[CONV71:%.*]] = trunc i32 [[COND70]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV71]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP35]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV72:%.*]] = sext i16 [[TMP36]] to i32
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV73:%.*]] = sext i16 [[TMP37]] to i32
// SIMD-ONLY0-NEXT:    [[CMP74:%.*]] = icmp slt i32 [[CONV72]], [[CONV73]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP74]], label [[COND_TRUE76:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true76:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV77:%.*]] = sext i16 [[TMP38]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV79:%.*]] = sext i16 [[TMP39]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80]]
// SIMD-ONLY0:       cond.end80:
// SIMD-ONLY0-NEXT:    [[COND81:%.*]] = phi i32 [ [[CONV77]], [[COND_TRUE76]] ], [ [[CONV79]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    [[CONV82:%.*]] = trunc i32 [[COND81]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV82]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP40]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV83:%.*]] = sext i16 [[TMP41]] to i32
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV84:%.*]] = sext i16 [[TMP42]] to i32
// SIMD-ONLY0-NEXT:    [[CMP85:%.*]] = icmp eq i32 [[CONV83]], [[CONV84]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP85]], label [[COND_TRUE87:%.*]], label [[COND_FALSE89:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV88:%.*]] = sext i16 [[TMP43]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91:%.*]]
// SIMD-ONLY0:       cond.false89:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV90:%.*]] = sext i16 [[TMP44]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91]]
// SIMD-ONLY0:       cond.end91:
// SIMD-ONLY0-NEXT:    [[COND92:%.*]] = phi i32 [ [[CONV88]], [[COND_TRUE87]] ], [ [[CONV90]], [[COND_FALSE89]] ]
// SIMD-ONLY0-NEXT:    [[CONV93:%.*]] = trunc i32 [[COND92]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV93]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV94:%.*]] = sext i16 [[TMP45]] to i32
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV95:%.*]] = sext i16 [[TMP46]] to i32
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp sgt i32 [[CONV94]], [[CONV95]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE98:%.*]], label [[COND_FALSE100:%.*]]
// SIMD-ONLY0:       cond.true98:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV99:%.*]] = sext i16 [[TMP47]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102:%.*]]
// SIMD-ONLY0:       cond.false100:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV101:%.*]] = sext i16 [[TMP48]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102]]
// SIMD-ONLY0:       cond.end102:
// SIMD-ONLY0-NEXT:    [[COND103:%.*]] = phi i32 [ [[CONV99]], [[COND_TRUE98]] ], [ [[CONV101]], [[COND_FALSE100]] ]
// SIMD-ONLY0-NEXT:    [[CONV104:%.*]] = trunc i32 [[COND103]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV104]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP49]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV105:%.*]] = sext i16 [[TMP50]] to i32
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV106:%.*]] = sext i16 [[TMP51]] to i32
// SIMD-ONLY0-NEXT:    [[CMP107:%.*]] = icmp slt i32 [[CONV105]], [[CONV106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP107]], label [[COND_TRUE109:%.*]], label [[COND_FALSE111:%.*]]
// SIMD-ONLY0:       cond.true109:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV110:%.*]] = sext i16 [[TMP52]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113:%.*]]
// SIMD-ONLY0:       cond.false111:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV112:%.*]] = sext i16 [[TMP53]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113]]
// SIMD-ONLY0:       cond.end113:
// SIMD-ONLY0-NEXT:    [[COND114:%.*]] = phi i32 [ [[CONV110]], [[COND_TRUE109]] ], [ [[CONV112]], [[COND_FALSE111]] ]
// SIMD-ONLY0-NEXT:    [[CONV115:%.*]] = trunc i32 [[COND114]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV115]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP54]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV116:%.*]] = sext i16 [[TMP55]] to i32
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV117:%.*]] = sext i16 [[TMP56]] to i32
// SIMD-ONLY0-NEXT:    [[CMP118:%.*]] = icmp eq i32 [[CONV116]], [[CONV117]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP118]], label [[COND_TRUE120:%.*]], label [[COND_FALSE122:%.*]]
// SIMD-ONLY0:       cond.true120:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV121:%.*]] = sext i16 [[TMP57]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false122:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV123:%.*]] = sext i16 [[TMP58]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i32 [ [[CONV121]], [[COND_TRUE120]] ], [ [[CONV123]], [[COND_FALSE122]] ]
// SIMD-ONLY0-NEXT:    [[CONV126:%.*]] = trunc i32 [[COND125]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV126]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP59]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP60]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV127:%.*]] = sext i16 [[TMP61]] to i32
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV128:%.*]] = sext i16 [[TMP62]] to i32
// SIMD-ONLY0-NEXT:    [[CMP129:%.*]] = icmp sgt i32 [[CONV127]], [[CONV128]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP129]], label [[COND_TRUE131:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true131:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV132:%.*]] = sext i16 [[TMP63]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV134:%.*]] = sext i16 [[TMP64]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135]]
// SIMD-ONLY0:       cond.end135:
// SIMD-ONLY0-NEXT:    [[COND136:%.*]] = phi i32 [ [[CONV132]], [[COND_TRUE131]] ], [ [[CONV134]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    [[CONV137:%.*]] = trunc i32 [[COND136]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV137]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP65]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV138:%.*]] = sext i16 [[TMP66]] to i32
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV139:%.*]] = sext i16 [[TMP67]] to i32
// SIMD-ONLY0-NEXT:    [[CMP140:%.*]] = icmp slt i32 [[CONV138]], [[CONV139]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP140]], label [[COND_TRUE142:%.*]], label [[COND_FALSE144:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV143:%.*]] = sext i16 [[TMP68]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146:%.*]]
// SIMD-ONLY0:       cond.false144:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV145:%.*]] = sext i16 [[TMP69]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146]]
// SIMD-ONLY0:       cond.end146:
// SIMD-ONLY0-NEXT:    [[COND147:%.*]] = phi i32 [ [[CONV143]], [[COND_TRUE142]] ], [ [[CONV145]], [[COND_FALSE144]] ]
// SIMD-ONLY0-NEXT:    [[CONV148:%.*]] = trunc i32 [[COND147]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV148]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP70]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV149:%.*]] = sext i16 [[TMP71]] to i32
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV150:%.*]] = sext i16 [[TMP72]] to i32
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp eq i32 [[CONV149]], [[CONV150]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE153:%.*]], label [[COND_FALSE155:%.*]]
// SIMD-ONLY0:       cond.true153:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV154:%.*]] = sext i16 [[TMP73]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157:%.*]]
// SIMD-ONLY0:       cond.false155:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV156:%.*]] = sext i16 [[TMP74]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157]]
// SIMD-ONLY0:       cond.end157:
// SIMD-ONLY0-NEXT:    [[COND158:%.*]] = phi i32 [ [[CONV154]], [[COND_TRUE153]] ], [ [[CONV156]], [[COND_FALSE155]] ]
// SIMD-ONLY0-NEXT:    [[CONV159:%.*]] = trunc i32 [[COND158]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV159]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV160:%.*]] = sext i16 [[TMP75]] to i32
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV161:%.*]] = sext i16 [[TMP76]] to i32
// SIMD-ONLY0-NEXT:    [[CMP162:%.*]] = icmp sgt i32 [[CONV160]], [[CONV161]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP162]], label [[COND_TRUE164:%.*]], label [[COND_FALSE166:%.*]]
// SIMD-ONLY0:       cond.true164:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV165:%.*]] = sext i16 [[TMP77]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168:%.*]]
// SIMD-ONLY0:       cond.false166:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV167:%.*]] = sext i16 [[TMP78]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168]]
// SIMD-ONLY0:       cond.end168:
// SIMD-ONLY0-NEXT:    [[COND169:%.*]] = phi i32 [ [[CONV165]], [[COND_TRUE164]] ], [ [[CONV167]], [[COND_FALSE166]] ]
// SIMD-ONLY0-NEXT:    [[CONV170:%.*]] = trunc i32 [[COND169]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV170]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP79]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV171:%.*]] = sext i16 [[TMP80]] to i32
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV172:%.*]] = sext i16 [[TMP81]] to i32
// SIMD-ONLY0-NEXT:    [[CMP173:%.*]] = icmp slt i32 [[CONV171]], [[CONV172]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP173]], label [[COND_TRUE175:%.*]], label [[COND_FALSE177:%.*]]
// SIMD-ONLY0:       cond.true175:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV176:%.*]] = sext i16 [[TMP82]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179:%.*]]
// SIMD-ONLY0:       cond.false177:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV178:%.*]] = sext i16 [[TMP83]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179]]
// SIMD-ONLY0:       cond.end179:
// SIMD-ONLY0-NEXT:    [[COND180:%.*]] = phi i32 [ [[CONV176]], [[COND_TRUE175]] ], [ [[CONV178]], [[COND_FALSE177]] ]
// SIMD-ONLY0-NEXT:    [[CONV181:%.*]] = trunc i32 [[COND180]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV181]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP84]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV182:%.*]] = sext i16 [[TMP85]] to i32
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV183:%.*]] = sext i16 [[TMP86]] to i32
// SIMD-ONLY0-NEXT:    [[CMP184:%.*]] = icmp eq i32 [[CONV182]], [[CONV183]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP184]], label [[COND_TRUE186:%.*]], label [[COND_FALSE188:%.*]]
// SIMD-ONLY0:       cond.true186:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV187:%.*]] = sext i16 [[TMP87]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190:%.*]]
// SIMD-ONLY0:       cond.false188:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV189:%.*]] = sext i16 [[TMP88]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190]]
// SIMD-ONLY0:       cond.end190:
// SIMD-ONLY0-NEXT:    [[COND191:%.*]] = phi i32 [ [[CONV187]], [[COND_TRUE186]] ], [ [[CONV189]], [[COND_FALSE188]] ]
// SIMD-ONLY0-NEXT:    [[CONV192:%.*]] = trunc i32 [[COND191]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV192]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP89]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP90]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV193:%.*]] = sext i16 [[TMP91]] to i32
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV194:%.*]] = sext i16 [[TMP92]] to i32
// SIMD-ONLY0-NEXT:    [[CMP195:%.*]] = icmp sgt i32 [[CONV193]], [[CONV194]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP195]], label [[COND_TRUE197:%.*]], label [[COND_FALSE199:%.*]]
// SIMD-ONLY0:       cond.true197:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV198:%.*]] = sext i16 [[TMP93]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201:%.*]]
// SIMD-ONLY0:       cond.false199:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV200:%.*]] = sext i16 [[TMP94]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201]]
// SIMD-ONLY0:       cond.end201:
// SIMD-ONLY0-NEXT:    [[COND202:%.*]] = phi i32 [ [[CONV198]], [[COND_TRUE197]] ], [ [[CONV200]], [[COND_FALSE199]] ]
// SIMD-ONLY0-NEXT:    [[CONV203:%.*]] = trunc i32 [[COND202]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV203]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP95]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV204:%.*]] = sext i16 [[TMP96]] to i32
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV205:%.*]] = sext i16 [[TMP97]] to i32
// SIMD-ONLY0-NEXT:    [[CMP206:%.*]] = icmp slt i32 [[CONV204]], [[CONV205]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP206]], label [[COND_TRUE208:%.*]], label [[COND_FALSE210:%.*]]
// SIMD-ONLY0:       cond.true208:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV209:%.*]] = sext i16 [[TMP98]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212:%.*]]
// SIMD-ONLY0:       cond.false210:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV211:%.*]] = sext i16 [[TMP99]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212]]
// SIMD-ONLY0:       cond.end212:
// SIMD-ONLY0-NEXT:    [[COND213:%.*]] = phi i32 [ [[CONV209]], [[COND_TRUE208]] ], [ [[CONV211]], [[COND_FALSE210]] ]
// SIMD-ONLY0-NEXT:    [[CONV214:%.*]] = trunc i32 [[COND213]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV214]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP100]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV215:%.*]] = sext i16 [[TMP101]] to i32
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV216:%.*]] = sext i16 [[TMP102]] to i32
// SIMD-ONLY0-NEXT:    [[CMP217:%.*]] = icmp eq i32 [[CONV215]], [[CONV216]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP217]], label [[COND_TRUE219:%.*]], label [[COND_FALSE221:%.*]]
// SIMD-ONLY0:       cond.true219:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV220:%.*]] = sext i16 [[TMP103]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223:%.*]]
// SIMD-ONLY0:       cond.false221:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV222:%.*]] = sext i16 [[TMP104]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223]]
// SIMD-ONLY0:       cond.end223:
// SIMD-ONLY0-NEXT:    [[COND224:%.*]] = phi i32 [ [[CONV220]], [[COND_TRUE219]] ], [ [[CONV222]], [[COND_FALSE221]] ]
// SIMD-ONLY0-NEXT:    [[CONV225:%.*]] = trunc i32 [[COND224]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV225]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV226:%.*]] = sext i16 [[TMP105]] to i32
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV227:%.*]] = sext i16 [[TMP106]] to i32
// SIMD-ONLY0-NEXT:    [[CMP228:%.*]] = icmp sgt i32 [[CONV226]], [[CONV227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP228]], label [[COND_TRUE230:%.*]], label [[COND_FALSE232:%.*]]
// SIMD-ONLY0:       cond.true230:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV231:%.*]] = sext i16 [[TMP107]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234:%.*]]
// SIMD-ONLY0:       cond.false232:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV233:%.*]] = sext i16 [[TMP108]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234]]
// SIMD-ONLY0:       cond.end234:
// SIMD-ONLY0-NEXT:    [[COND235:%.*]] = phi i32 [ [[CONV231]], [[COND_TRUE230]] ], [ [[CONV233]], [[COND_FALSE232]] ]
// SIMD-ONLY0-NEXT:    [[CONV236:%.*]] = trunc i32 [[COND235]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV236]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP109]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV237:%.*]] = sext i16 [[TMP110]] to i32
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV238:%.*]] = sext i16 [[TMP111]] to i32
// SIMD-ONLY0-NEXT:    [[CMP239:%.*]] = icmp slt i32 [[CONV237]], [[CONV238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP239]], label [[COND_TRUE241:%.*]], label [[COND_FALSE243:%.*]]
// SIMD-ONLY0:       cond.true241:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV242:%.*]] = sext i16 [[TMP112]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245:%.*]]
// SIMD-ONLY0:       cond.false243:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV244:%.*]] = sext i16 [[TMP113]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245]]
// SIMD-ONLY0:       cond.end245:
// SIMD-ONLY0-NEXT:    [[COND246:%.*]] = phi i32 [ [[CONV242]], [[COND_TRUE241]] ], [ [[CONV244]], [[COND_FALSE243]] ]
// SIMD-ONLY0-NEXT:    [[CONV247:%.*]] = trunc i32 [[COND246]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV247]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP114]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV248:%.*]] = sext i16 [[TMP115]] to i32
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV249:%.*]] = sext i16 [[TMP116]] to i32
// SIMD-ONLY0-NEXT:    [[CMP250:%.*]] = icmp eq i32 [[CONV248]], [[CONV249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP250]], label [[COND_TRUE252:%.*]], label [[COND_FALSE254:%.*]]
// SIMD-ONLY0:       cond.true252:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV253:%.*]] = sext i16 [[TMP117]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256:%.*]]
// SIMD-ONLY0:       cond.false254:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV255:%.*]] = sext i16 [[TMP118]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256]]
// SIMD-ONLY0:       cond.end256:
// SIMD-ONLY0-NEXT:    [[COND257:%.*]] = phi i32 [ [[CONV253]], [[COND_TRUE252]] ], [ [[CONV255]], [[COND_FALSE254]] ]
// SIMD-ONLY0-NEXT:    [[CONV258:%.*]] = trunc i32 [[COND257]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV258]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP119]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP120]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV259:%.*]] = sext i16 [[TMP121]] to i32
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV260:%.*]] = sext i16 [[TMP122]] to i32
// SIMD-ONLY0-NEXT:    [[CMP261:%.*]] = icmp sgt i32 [[CONV259]], [[CONV260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP261]], label [[COND_TRUE263:%.*]], label [[COND_FALSE265:%.*]]
// SIMD-ONLY0:       cond.true263:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV264:%.*]] = sext i16 [[TMP123]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267:%.*]]
// SIMD-ONLY0:       cond.false265:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV266:%.*]] = sext i16 [[TMP124]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267]]
// SIMD-ONLY0:       cond.end267:
// SIMD-ONLY0-NEXT:    [[COND268:%.*]] = phi i32 [ [[CONV264]], [[COND_TRUE263]] ], [ [[CONV266]], [[COND_FALSE265]] ]
// SIMD-ONLY0-NEXT:    [[CONV269:%.*]] = trunc i32 [[COND268]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV269]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP125]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV270:%.*]] = sext i16 [[TMP126]] to i32
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV271:%.*]] = sext i16 [[TMP127]] to i32
// SIMD-ONLY0-NEXT:    [[CMP272:%.*]] = icmp slt i32 [[CONV270]], [[CONV271]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP272]], label [[COND_TRUE274:%.*]], label [[COND_FALSE276:%.*]]
// SIMD-ONLY0:       cond.true274:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV275:%.*]] = sext i16 [[TMP128]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278:%.*]]
// SIMD-ONLY0:       cond.false276:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV277:%.*]] = sext i16 [[TMP129]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278]]
// SIMD-ONLY0:       cond.end278:
// SIMD-ONLY0-NEXT:    [[COND279:%.*]] = phi i32 [ [[CONV275]], [[COND_TRUE274]] ], [ [[CONV277]], [[COND_FALSE276]] ]
// SIMD-ONLY0-NEXT:    [[CONV280:%.*]] = trunc i32 [[COND279]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV280]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP130]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV281:%.*]] = sext i16 [[TMP131]] to i32
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV282:%.*]] = sext i16 [[TMP132]] to i32
// SIMD-ONLY0-NEXT:    [[CMP283:%.*]] = icmp eq i32 [[CONV281]], [[CONV282]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP283]], label [[COND_TRUE285:%.*]], label [[COND_FALSE287:%.*]]
// SIMD-ONLY0:       cond.true285:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV286:%.*]] = sext i16 [[TMP133]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289:%.*]]
// SIMD-ONLY0:       cond.false287:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV288:%.*]] = sext i16 [[TMP134]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289]]
// SIMD-ONLY0:       cond.end289:
// SIMD-ONLY0-NEXT:    [[COND290:%.*]] = phi i32 [ [[CONV286]], [[COND_TRUE285]] ], [ [[CONV288]], [[COND_FALSE287]] ]
// SIMD-ONLY0-NEXT:    [[CONV291:%.*]] = trunc i32 [[COND290]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV291]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV292:%.*]] = sext i16 [[TMP135]] to i32
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV293:%.*]] = sext i16 [[TMP136]] to i32
// SIMD-ONLY0-NEXT:    [[CMP294:%.*]] = icmp sgt i32 [[CONV292]], [[CONV293]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP294]], label [[COND_TRUE296:%.*]], label [[COND_FALSE298:%.*]]
// SIMD-ONLY0:       cond.true296:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV297:%.*]] = sext i16 [[TMP137]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300:%.*]]
// SIMD-ONLY0:       cond.false298:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV299:%.*]] = sext i16 [[TMP138]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300]]
// SIMD-ONLY0:       cond.end300:
// SIMD-ONLY0-NEXT:    [[COND301:%.*]] = phi i32 [ [[CONV297]], [[COND_TRUE296]] ], [ [[CONV299]], [[COND_FALSE298]] ]
// SIMD-ONLY0-NEXT:    [[CONV302:%.*]] = trunc i32 [[COND301]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV302]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP139]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV303:%.*]] = sext i16 [[TMP140]] to i32
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV304:%.*]] = sext i16 [[TMP141]] to i32
// SIMD-ONLY0-NEXT:    [[CMP305:%.*]] = icmp slt i32 [[CONV303]], [[CONV304]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP305]], label [[COND_TRUE307:%.*]], label [[COND_FALSE309:%.*]]
// SIMD-ONLY0:       cond.true307:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV308:%.*]] = sext i16 [[TMP142]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311:%.*]]
// SIMD-ONLY0:       cond.false309:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV310:%.*]] = sext i16 [[TMP143]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311]]
// SIMD-ONLY0:       cond.end311:
// SIMD-ONLY0-NEXT:    [[COND312:%.*]] = phi i32 [ [[CONV308]], [[COND_TRUE307]] ], [ [[CONV310]], [[COND_FALSE309]] ]
// SIMD-ONLY0-NEXT:    [[CONV313:%.*]] = trunc i32 [[COND312]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV313]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP144]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV314:%.*]] = sext i16 [[TMP145]] to i32
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV315:%.*]] = sext i16 [[TMP146]] to i32
// SIMD-ONLY0-NEXT:    [[CMP316:%.*]] = icmp eq i32 [[CONV314]], [[CONV315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP316]], label [[COND_TRUE318:%.*]], label [[COND_FALSE320:%.*]]
// SIMD-ONLY0:       cond.true318:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV319:%.*]] = sext i16 [[TMP147]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322:%.*]]
// SIMD-ONLY0:       cond.false320:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV321:%.*]] = sext i16 [[TMP148]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322]]
// SIMD-ONLY0:       cond.end322:
// SIMD-ONLY0-NEXT:    [[COND323:%.*]] = phi i32 [ [[CONV319]], [[COND_TRUE318]] ], [ [[CONV321]], [[COND_FALSE320]] ]
// SIMD-ONLY0-NEXT:    [[CONV324:%.*]] = trunc i32 [[COND323]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV324]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP149]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP150]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV325:%.*]] = sext i16 [[TMP151]] to i32
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV326:%.*]] = sext i16 [[TMP152]] to i32
// SIMD-ONLY0-NEXT:    [[CMP327:%.*]] = icmp sgt i32 [[CONV325]], [[CONV326]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP327]], label [[COND_TRUE329:%.*]], label [[COND_FALSE331:%.*]]
// SIMD-ONLY0:       cond.true329:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV330:%.*]] = sext i16 [[TMP153]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333:%.*]]
// SIMD-ONLY0:       cond.false331:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV332:%.*]] = sext i16 [[TMP154]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333]]
// SIMD-ONLY0:       cond.end333:
// SIMD-ONLY0-NEXT:    [[COND334:%.*]] = phi i32 [ [[CONV330]], [[COND_TRUE329]] ], [ [[CONV332]], [[COND_FALSE331]] ]
// SIMD-ONLY0-NEXT:    [[CONV335:%.*]] = trunc i32 [[COND334]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV335]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP155]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV336:%.*]] = sext i16 [[TMP156]] to i32
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV337:%.*]] = sext i16 [[TMP157]] to i32
// SIMD-ONLY0-NEXT:    [[CMP338:%.*]] = icmp slt i32 [[CONV336]], [[CONV337]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP338]], label [[COND_TRUE340:%.*]], label [[COND_FALSE342:%.*]]
// SIMD-ONLY0:       cond.true340:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV341:%.*]] = sext i16 [[TMP158]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344:%.*]]
// SIMD-ONLY0:       cond.false342:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV343:%.*]] = sext i16 [[TMP159]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344]]
// SIMD-ONLY0:       cond.end344:
// SIMD-ONLY0-NEXT:    [[COND345:%.*]] = phi i32 [ [[CONV341]], [[COND_TRUE340]] ], [ [[CONV343]], [[COND_FALSE342]] ]
// SIMD-ONLY0-NEXT:    [[CONV346:%.*]] = trunc i32 [[COND345]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV346]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP160]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV347:%.*]] = sext i16 [[TMP161]] to i32
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV348:%.*]] = sext i16 [[TMP162]] to i32
// SIMD-ONLY0-NEXT:    [[CMP349:%.*]] = icmp eq i32 [[CONV347]], [[CONV348]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP349]], label [[COND_TRUE351:%.*]], label [[COND_FALSE353:%.*]]
// SIMD-ONLY0:       cond.true351:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV352:%.*]] = sext i16 [[TMP163]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355:%.*]]
// SIMD-ONLY0:       cond.false353:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV354:%.*]] = sext i16 [[TMP164]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355]]
// SIMD-ONLY0:       cond.end355:
// SIMD-ONLY0-NEXT:    [[COND356:%.*]] = phi i32 [ [[CONV352]], [[COND_TRUE351]] ], [ [[CONV354]], [[COND_FALSE353]] ]
// SIMD-ONLY0-NEXT:    [[CONV357:%.*]] = trunc i32 [[COND356]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV357]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV358:%.*]] = sext i16 [[TMP165]] to i32
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV359:%.*]] = sext i16 [[TMP166]] to i32
// SIMD-ONLY0-NEXT:    [[CMP360:%.*]] = icmp sgt i32 [[CONV358]], [[CONV359]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP360]], label [[COND_TRUE362:%.*]], label [[COND_FALSE364:%.*]]
// SIMD-ONLY0:       cond.true362:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV363:%.*]] = sext i16 [[TMP167]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366:%.*]]
// SIMD-ONLY0:       cond.false364:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV365:%.*]] = sext i16 [[TMP168]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366]]
// SIMD-ONLY0:       cond.end366:
// SIMD-ONLY0-NEXT:    [[COND367:%.*]] = phi i32 [ [[CONV363]], [[COND_TRUE362]] ], [ [[CONV365]], [[COND_FALSE364]] ]
// SIMD-ONLY0-NEXT:    [[CONV368:%.*]] = trunc i32 [[COND367]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV368]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP169]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV369:%.*]] = sext i16 [[TMP170]] to i32
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV370:%.*]] = sext i16 [[TMP171]] to i32
// SIMD-ONLY0-NEXT:    [[CMP371:%.*]] = icmp slt i32 [[CONV369]], [[CONV370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP371]], label [[COND_TRUE373:%.*]], label [[COND_FALSE375:%.*]]
// SIMD-ONLY0:       cond.true373:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV374:%.*]] = sext i16 [[TMP172]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377:%.*]]
// SIMD-ONLY0:       cond.false375:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV376:%.*]] = sext i16 [[TMP173]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377]]
// SIMD-ONLY0:       cond.end377:
// SIMD-ONLY0-NEXT:    [[COND378:%.*]] = phi i32 [ [[CONV374]], [[COND_TRUE373]] ], [ [[CONV376]], [[COND_FALSE375]] ]
// SIMD-ONLY0-NEXT:    [[CONV379:%.*]] = trunc i32 [[COND378]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV379]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP174]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV380:%.*]] = sext i16 [[TMP175]] to i32
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i16, ptr [[SE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV381:%.*]] = sext i16 [[TMP176]] to i32
// SIMD-ONLY0-NEXT:    [[CMP382:%.*]] = icmp eq i32 [[CONV380]], [[CONV381]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP382]], label [[COND_TRUE384:%.*]], label [[COND_FALSE386:%.*]]
// SIMD-ONLY0:       cond.true384:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i16, ptr [[SD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV385:%.*]] = sext i16 [[TMP177]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388:%.*]]
// SIMD-ONLY0:       cond.false386:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV387:%.*]] = sext i16 [[TMP178]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388]]
// SIMD-ONLY0:       cond.end388:
// SIMD-ONLY0-NEXT:    [[COND389:%.*]] = phi i32 [ [[CONV385]], [[COND_TRUE384]] ], [ [[CONV387]], [[COND_FALSE386]] ]
// SIMD-ONLY0-NEXT:    [[CONV390:%.*]] = trunc i32 [[COND389]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV390]], ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i16, ptr [[SX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP179]], ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i16, ptr [[SV]], align 2
// SIMD-ONLY0-NEXT:    ret i16 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @usxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[USX:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USV:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USE:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[USD:%.*]] = alloca i16, align 2
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP0]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV:%.*]] = zext i16 [[TMP1]] to i32
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV1:%.*]] = zext i16 [[TMP2]] to i32
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV1]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV3:%.*]] = zext i16 [[TMP3]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV4:%.*]] = zext i16 [[TMP4]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[CONV3]], [[COND_TRUE]] ], [ [[CONV4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    [[CONV5:%.*]] = trunc i32 [[COND]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV5]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP5]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV6:%.*]] = zext i16 [[TMP6]] to i32
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV7:%.*]] = zext i16 [[TMP7]] to i32
// SIMD-ONLY0-NEXT:    [[CMP8:%.*]] = icmp slt i32 [[CONV6]], [[CONV7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP8]], label [[COND_TRUE10:%.*]], label [[COND_FALSE12:%.*]]
// SIMD-ONLY0:       cond.true10:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV11:%.*]] = zext i16 [[TMP8]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false12:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV13:%.*]] = zext i16 [[TMP9]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[CONV11]], [[COND_TRUE10]] ], [ [[CONV13]], [[COND_FALSE12]] ]
// SIMD-ONLY0-NEXT:    [[CONV16:%.*]] = trunc i32 [[COND15]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV16]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP10]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV17:%.*]] = zext i16 [[TMP11]] to i32
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV18:%.*]] = zext i16 [[TMP12]] to i32
// SIMD-ONLY0-NEXT:    [[CMP19:%.*]] = icmp eq i32 [[CONV17]], [[CONV18]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP19]], label [[COND_TRUE21:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true21:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV22:%.*]] = zext i16 [[TMP13]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV24:%.*]] = zext i16 [[TMP14]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END25]]
// SIMD-ONLY0:       cond.end25:
// SIMD-ONLY0-NEXT:    [[COND26:%.*]] = phi i32 [ [[CONV22]], [[COND_TRUE21]] ], [ [[CONV24]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    [[CONV27:%.*]] = trunc i32 [[COND26]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV27]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV28:%.*]] = zext i16 [[TMP15]] to i32
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV29:%.*]] = zext i16 [[TMP16]] to i32
// SIMD-ONLY0-NEXT:    [[CMP30:%.*]] = icmp sgt i32 [[CONV28]], [[CONV29]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP30]], label [[COND_TRUE32:%.*]], label [[COND_FALSE34:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV33:%.*]] = zext i16 [[TMP17]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36:%.*]]
// SIMD-ONLY0:       cond.false34:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV35:%.*]] = zext i16 [[TMP18]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END36]]
// SIMD-ONLY0:       cond.end36:
// SIMD-ONLY0-NEXT:    [[COND37:%.*]] = phi i32 [ [[CONV33]], [[COND_TRUE32]] ], [ [[CONV35]], [[COND_FALSE34]] ]
// SIMD-ONLY0-NEXT:    [[CONV38:%.*]] = trunc i32 [[COND37]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV38]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP19]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV39:%.*]] = zext i16 [[TMP20]] to i32
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV40:%.*]] = zext i16 [[TMP21]] to i32
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp slt i32 [[CONV39]], [[CONV40]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE43:%.*]], label [[COND_FALSE45:%.*]]
// SIMD-ONLY0:       cond.true43:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV44:%.*]] = zext i16 [[TMP22]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47:%.*]]
// SIMD-ONLY0:       cond.false45:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV46:%.*]] = zext i16 [[TMP23]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END47]]
// SIMD-ONLY0:       cond.end47:
// SIMD-ONLY0-NEXT:    [[COND48:%.*]] = phi i32 [ [[CONV44]], [[COND_TRUE43]] ], [ [[CONV46]], [[COND_FALSE45]] ]
// SIMD-ONLY0-NEXT:    [[CONV49:%.*]] = trunc i32 [[COND48]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV49]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP24]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV50:%.*]] = zext i16 [[TMP25]] to i32
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV51:%.*]] = zext i16 [[TMP26]] to i32
// SIMD-ONLY0-NEXT:    [[CMP52:%.*]] = icmp eq i32 [[CONV50]], [[CONV51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP52]], label [[COND_TRUE54:%.*]], label [[COND_FALSE56:%.*]]
// SIMD-ONLY0:       cond.true54:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV55:%.*]] = zext i16 [[TMP27]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58:%.*]]
// SIMD-ONLY0:       cond.false56:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV57:%.*]] = zext i16 [[TMP28]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END58]]
// SIMD-ONLY0:       cond.end58:
// SIMD-ONLY0-NEXT:    [[COND59:%.*]] = phi i32 [ [[CONV55]], [[COND_TRUE54]] ], [ [[CONV57]], [[COND_FALSE56]] ]
// SIMD-ONLY0-NEXT:    [[CONV60:%.*]] = trunc i32 [[COND59]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV60]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP29]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP30]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV61:%.*]] = zext i16 [[TMP31]] to i32
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV62:%.*]] = zext i16 [[TMP32]] to i32
// SIMD-ONLY0-NEXT:    [[CMP63:%.*]] = icmp sgt i32 [[CONV61]], [[CONV62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP63]], label [[COND_TRUE65:%.*]], label [[COND_FALSE67:%.*]]
// SIMD-ONLY0:       cond.true65:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV66:%.*]] = zext i16 [[TMP33]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false67:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV68:%.*]] = zext i16 [[TMP34]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[CONV66]], [[COND_TRUE65]] ], [ [[CONV68]], [[COND_FALSE67]] ]
// SIMD-ONLY0-NEXT:    [[CONV71:%.*]] = trunc i32 [[COND70]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV71]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP35]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV72:%.*]] = zext i16 [[TMP36]] to i32
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV73:%.*]] = zext i16 [[TMP37]] to i32
// SIMD-ONLY0-NEXT:    [[CMP74:%.*]] = icmp slt i32 [[CONV72]], [[CONV73]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP74]], label [[COND_TRUE76:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true76:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV77:%.*]] = zext i16 [[TMP38]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV79:%.*]] = zext i16 [[TMP39]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END80]]
// SIMD-ONLY0:       cond.end80:
// SIMD-ONLY0-NEXT:    [[COND81:%.*]] = phi i32 [ [[CONV77]], [[COND_TRUE76]] ], [ [[CONV79]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    [[CONV82:%.*]] = trunc i32 [[COND81]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV82]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP40]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV83:%.*]] = zext i16 [[TMP41]] to i32
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV84:%.*]] = zext i16 [[TMP42]] to i32
// SIMD-ONLY0-NEXT:    [[CMP85:%.*]] = icmp eq i32 [[CONV83]], [[CONV84]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP85]], label [[COND_TRUE87:%.*]], label [[COND_FALSE89:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV88:%.*]] = zext i16 [[TMP43]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91:%.*]]
// SIMD-ONLY0:       cond.false89:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV90:%.*]] = zext i16 [[TMP44]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END91]]
// SIMD-ONLY0:       cond.end91:
// SIMD-ONLY0-NEXT:    [[COND92:%.*]] = phi i32 [ [[CONV88]], [[COND_TRUE87]] ], [ [[CONV90]], [[COND_FALSE89]] ]
// SIMD-ONLY0-NEXT:    [[CONV93:%.*]] = trunc i32 [[COND92]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV93]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV94:%.*]] = zext i16 [[TMP45]] to i32
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV95:%.*]] = zext i16 [[TMP46]] to i32
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp sgt i32 [[CONV94]], [[CONV95]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE98:%.*]], label [[COND_FALSE100:%.*]]
// SIMD-ONLY0:       cond.true98:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV99:%.*]] = zext i16 [[TMP47]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102:%.*]]
// SIMD-ONLY0:       cond.false100:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV101:%.*]] = zext i16 [[TMP48]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END102]]
// SIMD-ONLY0:       cond.end102:
// SIMD-ONLY0-NEXT:    [[COND103:%.*]] = phi i32 [ [[CONV99]], [[COND_TRUE98]] ], [ [[CONV101]], [[COND_FALSE100]] ]
// SIMD-ONLY0-NEXT:    [[CONV104:%.*]] = trunc i32 [[COND103]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV104]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP49]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV105:%.*]] = zext i16 [[TMP50]] to i32
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV106:%.*]] = zext i16 [[TMP51]] to i32
// SIMD-ONLY0-NEXT:    [[CMP107:%.*]] = icmp slt i32 [[CONV105]], [[CONV106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP107]], label [[COND_TRUE109:%.*]], label [[COND_FALSE111:%.*]]
// SIMD-ONLY0:       cond.true109:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV110:%.*]] = zext i16 [[TMP52]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113:%.*]]
// SIMD-ONLY0:       cond.false111:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV112:%.*]] = zext i16 [[TMP53]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END113]]
// SIMD-ONLY0:       cond.end113:
// SIMD-ONLY0-NEXT:    [[COND114:%.*]] = phi i32 [ [[CONV110]], [[COND_TRUE109]] ], [ [[CONV112]], [[COND_FALSE111]] ]
// SIMD-ONLY0-NEXT:    [[CONV115:%.*]] = trunc i32 [[COND114]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV115]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP54]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV116:%.*]] = zext i16 [[TMP55]] to i32
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV117:%.*]] = zext i16 [[TMP56]] to i32
// SIMD-ONLY0-NEXT:    [[CMP118:%.*]] = icmp eq i32 [[CONV116]], [[CONV117]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP118]], label [[COND_TRUE120:%.*]], label [[COND_FALSE122:%.*]]
// SIMD-ONLY0:       cond.true120:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV121:%.*]] = zext i16 [[TMP57]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false122:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV123:%.*]] = zext i16 [[TMP58]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i32 [ [[CONV121]], [[COND_TRUE120]] ], [ [[CONV123]], [[COND_FALSE122]] ]
// SIMD-ONLY0-NEXT:    [[CONV126:%.*]] = trunc i32 [[COND125]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV126]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP59]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP60]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV127:%.*]] = zext i16 [[TMP61]] to i32
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV128:%.*]] = zext i16 [[TMP62]] to i32
// SIMD-ONLY0-NEXT:    [[CMP129:%.*]] = icmp sgt i32 [[CONV127]], [[CONV128]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP129]], label [[COND_TRUE131:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true131:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV132:%.*]] = zext i16 [[TMP63]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV134:%.*]] = zext i16 [[TMP64]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END135]]
// SIMD-ONLY0:       cond.end135:
// SIMD-ONLY0-NEXT:    [[COND136:%.*]] = phi i32 [ [[CONV132]], [[COND_TRUE131]] ], [ [[CONV134]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    [[CONV137:%.*]] = trunc i32 [[COND136]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV137]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP65]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV138:%.*]] = zext i16 [[TMP66]] to i32
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV139:%.*]] = zext i16 [[TMP67]] to i32
// SIMD-ONLY0-NEXT:    [[CMP140:%.*]] = icmp slt i32 [[CONV138]], [[CONV139]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP140]], label [[COND_TRUE142:%.*]], label [[COND_FALSE144:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV143:%.*]] = zext i16 [[TMP68]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146:%.*]]
// SIMD-ONLY0:       cond.false144:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV145:%.*]] = zext i16 [[TMP69]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END146]]
// SIMD-ONLY0:       cond.end146:
// SIMD-ONLY0-NEXT:    [[COND147:%.*]] = phi i32 [ [[CONV143]], [[COND_TRUE142]] ], [ [[CONV145]], [[COND_FALSE144]] ]
// SIMD-ONLY0-NEXT:    [[CONV148:%.*]] = trunc i32 [[COND147]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV148]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP70]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV149:%.*]] = zext i16 [[TMP71]] to i32
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV150:%.*]] = zext i16 [[TMP72]] to i32
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp eq i32 [[CONV149]], [[CONV150]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE153:%.*]], label [[COND_FALSE155:%.*]]
// SIMD-ONLY0:       cond.true153:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV154:%.*]] = zext i16 [[TMP73]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157:%.*]]
// SIMD-ONLY0:       cond.false155:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV156:%.*]] = zext i16 [[TMP74]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END157]]
// SIMD-ONLY0:       cond.end157:
// SIMD-ONLY0-NEXT:    [[COND158:%.*]] = phi i32 [ [[CONV154]], [[COND_TRUE153]] ], [ [[CONV156]], [[COND_FALSE155]] ]
// SIMD-ONLY0-NEXT:    [[CONV159:%.*]] = trunc i32 [[COND158]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV159]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV160:%.*]] = zext i16 [[TMP75]] to i32
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV161:%.*]] = zext i16 [[TMP76]] to i32
// SIMD-ONLY0-NEXT:    [[CMP162:%.*]] = icmp sgt i32 [[CONV160]], [[CONV161]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP162]], label [[COND_TRUE164:%.*]], label [[COND_FALSE166:%.*]]
// SIMD-ONLY0:       cond.true164:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV165:%.*]] = zext i16 [[TMP77]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168:%.*]]
// SIMD-ONLY0:       cond.false166:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV167:%.*]] = zext i16 [[TMP78]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END168]]
// SIMD-ONLY0:       cond.end168:
// SIMD-ONLY0-NEXT:    [[COND169:%.*]] = phi i32 [ [[CONV165]], [[COND_TRUE164]] ], [ [[CONV167]], [[COND_FALSE166]] ]
// SIMD-ONLY0-NEXT:    [[CONV170:%.*]] = trunc i32 [[COND169]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV170]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP79]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV171:%.*]] = zext i16 [[TMP80]] to i32
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV172:%.*]] = zext i16 [[TMP81]] to i32
// SIMD-ONLY0-NEXT:    [[CMP173:%.*]] = icmp slt i32 [[CONV171]], [[CONV172]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP173]], label [[COND_TRUE175:%.*]], label [[COND_FALSE177:%.*]]
// SIMD-ONLY0:       cond.true175:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV176:%.*]] = zext i16 [[TMP82]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179:%.*]]
// SIMD-ONLY0:       cond.false177:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV178:%.*]] = zext i16 [[TMP83]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END179]]
// SIMD-ONLY0:       cond.end179:
// SIMD-ONLY0-NEXT:    [[COND180:%.*]] = phi i32 [ [[CONV176]], [[COND_TRUE175]] ], [ [[CONV178]], [[COND_FALSE177]] ]
// SIMD-ONLY0-NEXT:    [[CONV181:%.*]] = trunc i32 [[COND180]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV181]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP84]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV182:%.*]] = zext i16 [[TMP85]] to i32
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV183:%.*]] = zext i16 [[TMP86]] to i32
// SIMD-ONLY0-NEXT:    [[CMP184:%.*]] = icmp eq i32 [[CONV182]], [[CONV183]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP184]], label [[COND_TRUE186:%.*]], label [[COND_FALSE188:%.*]]
// SIMD-ONLY0:       cond.true186:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV187:%.*]] = zext i16 [[TMP87]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190:%.*]]
// SIMD-ONLY0:       cond.false188:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV189:%.*]] = zext i16 [[TMP88]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END190]]
// SIMD-ONLY0:       cond.end190:
// SIMD-ONLY0-NEXT:    [[COND191:%.*]] = phi i32 [ [[CONV187]], [[COND_TRUE186]] ], [ [[CONV189]], [[COND_FALSE188]] ]
// SIMD-ONLY0-NEXT:    [[CONV192:%.*]] = trunc i32 [[COND191]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV192]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP89]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP90]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV193:%.*]] = zext i16 [[TMP91]] to i32
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV194:%.*]] = zext i16 [[TMP92]] to i32
// SIMD-ONLY0-NEXT:    [[CMP195:%.*]] = icmp sgt i32 [[CONV193]], [[CONV194]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP195]], label [[COND_TRUE197:%.*]], label [[COND_FALSE199:%.*]]
// SIMD-ONLY0:       cond.true197:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV198:%.*]] = zext i16 [[TMP93]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201:%.*]]
// SIMD-ONLY0:       cond.false199:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV200:%.*]] = zext i16 [[TMP94]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END201]]
// SIMD-ONLY0:       cond.end201:
// SIMD-ONLY0-NEXT:    [[COND202:%.*]] = phi i32 [ [[CONV198]], [[COND_TRUE197]] ], [ [[CONV200]], [[COND_FALSE199]] ]
// SIMD-ONLY0-NEXT:    [[CONV203:%.*]] = trunc i32 [[COND202]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV203]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP95]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV204:%.*]] = zext i16 [[TMP96]] to i32
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV205:%.*]] = zext i16 [[TMP97]] to i32
// SIMD-ONLY0-NEXT:    [[CMP206:%.*]] = icmp slt i32 [[CONV204]], [[CONV205]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP206]], label [[COND_TRUE208:%.*]], label [[COND_FALSE210:%.*]]
// SIMD-ONLY0:       cond.true208:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV209:%.*]] = zext i16 [[TMP98]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212:%.*]]
// SIMD-ONLY0:       cond.false210:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV211:%.*]] = zext i16 [[TMP99]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END212]]
// SIMD-ONLY0:       cond.end212:
// SIMD-ONLY0-NEXT:    [[COND213:%.*]] = phi i32 [ [[CONV209]], [[COND_TRUE208]] ], [ [[CONV211]], [[COND_FALSE210]] ]
// SIMD-ONLY0-NEXT:    [[CONV214:%.*]] = trunc i32 [[COND213]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV214]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP100]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV215:%.*]] = zext i16 [[TMP101]] to i32
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV216:%.*]] = zext i16 [[TMP102]] to i32
// SIMD-ONLY0-NEXT:    [[CMP217:%.*]] = icmp eq i32 [[CONV215]], [[CONV216]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP217]], label [[COND_TRUE219:%.*]], label [[COND_FALSE221:%.*]]
// SIMD-ONLY0:       cond.true219:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV220:%.*]] = zext i16 [[TMP103]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223:%.*]]
// SIMD-ONLY0:       cond.false221:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV222:%.*]] = zext i16 [[TMP104]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END223]]
// SIMD-ONLY0:       cond.end223:
// SIMD-ONLY0-NEXT:    [[COND224:%.*]] = phi i32 [ [[CONV220]], [[COND_TRUE219]] ], [ [[CONV222]], [[COND_FALSE221]] ]
// SIMD-ONLY0-NEXT:    [[CONV225:%.*]] = trunc i32 [[COND224]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV225]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV226:%.*]] = zext i16 [[TMP105]] to i32
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV227:%.*]] = zext i16 [[TMP106]] to i32
// SIMD-ONLY0-NEXT:    [[CMP228:%.*]] = icmp sgt i32 [[CONV226]], [[CONV227]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP228]], label [[COND_TRUE230:%.*]], label [[COND_FALSE232:%.*]]
// SIMD-ONLY0:       cond.true230:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV231:%.*]] = zext i16 [[TMP107]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234:%.*]]
// SIMD-ONLY0:       cond.false232:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV233:%.*]] = zext i16 [[TMP108]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END234]]
// SIMD-ONLY0:       cond.end234:
// SIMD-ONLY0-NEXT:    [[COND235:%.*]] = phi i32 [ [[CONV231]], [[COND_TRUE230]] ], [ [[CONV233]], [[COND_FALSE232]] ]
// SIMD-ONLY0-NEXT:    [[CONV236:%.*]] = trunc i32 [[COND235]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV236]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP109]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV237:%.*]] = zext i16 [[TMP110]] to i32
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV238:%.*]] = zext i16 [[TMP111]] to i32
// SIMD-ONLY0-NEXT:    [[CMP239:%.*]] = icmp slt i32 [[CONV237]], [[CONV238]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP239]], label [[COND_TRUE241:%.*]], label [[COND_FALSE243:%.*]]
// SIMD-ONLY0:       cond.true241:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV242:%.*]] = zext i16 [[TMP112]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245:%.*]]
// SIMD-ONLY0:       cond.false243:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV244:%.*]] = zext i16 [[TMP113]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END245]]
// SIMD-ONLY0:       cond.end245:
// SIMD-ONLY0-NEXT:    [[COND246:%.*]] = phi i32 [ [[CONV242]], [[COND_TRUE241]] ], [ [[CONV244]], [[COND_FALSE243]] ]
// SIMD-ONLY0-NEXT:    [[CONV247:%.*]] = trunc i32 [[COND246]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV247]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP114]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV248:%.*]] = zext i16 [[TMP115]] to i32
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV249:%.*]] = zext i16 [[TMP116]] to i32
// SIMD-ONLY0-NEXT:    [[CMP250:%.*]] = icmp eq i32 [[CONV248]], [[CONV249]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP250]], label [[COND_TRUE252:%.*]], label [[COND_FALSE254:%.*]]
// SIMD-ONLY0:       cond.true252:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV253:%.*]] = zext i16 [[TMP117]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256:%.*]]
// SIMD-ONLY0:       cond.false254:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV255:%.*]] = zext i16 [[TMP118]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END256]]
// SIMD-ONLY0:       cond.end256:
// SIMD-ONLY0-NEXT:    [[COND257:%.*]] = phi i32 [ [[CONV253]], [[COND_TRUE252]] ], [ [[CONV255]], [[COND_FALSE254]] ]
// SIMD-ONLY0-NEXT:    [[CONV258:%.*]] = trunc i32 [[COND257]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV258]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP119]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP120]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV259:%.*]] = zext i16 [[TMP121]] to i32
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV260:%.*]] = zext i16 [[TMP122]] to i32
// SIMD-ONLY0-NEXT:    [[CMP261:%.*]] = icmp sgt i32 [[CONV259]], [[CONV260]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP261]], label [[COND_TRUE263:%.*]], label [[COND_FALSE265:%.*]]
// SIMD-ONLY0:       cond.true263:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV264:%.*]] = zext i16 [[TMP123]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267:%.*]]
// SIMD-ONLY0:       cond.false265:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV266:%.*]] = zext i16 [[TMP124]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END267]]
// SIMD-ONLY0:       cond.end267:
// SIMD-ONLY0-NEXT:    [[COND268:%.*]] = phi i32 [ [[CONV264]], [[COND_TRUE263]] ], [ [[CONV266]], [[COND_FALSE265]] ]
// SIMD-ONLY0-NEXT:    [[CONV269:%.*]] = trunc i32 [[COND268]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV269]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP125]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV270:%.*]] = zext i16 [[TMP126]] to i32
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV271:%.*]] = zext i16 [[TMP127]] to i32
// SIMD-ONLY0-NEXT:    [[CMP272:%.*]] = icmp slt i32 [[CONV270]], [[CONV271]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP272]], label [[COND_TRUE274:%.*]], label [[COND_FALSE276:%.*]]
// SIMD-ONLY0:       cond.true274:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV275:%.*]] = zext i16 [[TMP128]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278:%.*]]
// SIMD-ONLY0:       cond.false276:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV277:%.*]] = zext i16 [[TMP129]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END278]]
// SIMD-ONLY0:       cond.end278:
// SIMD-ONLY0-NEXT:    [[COND279:%.*]] = phi i32 [ [[CONV275]], [[COND_TRUE274]] ], [ [[CONV277]], [[COND_FALSE276]] ]
// SIMD-ONLY0-NEXT:    [[CONV280:%.*]] = trunc i32 [[COND279]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV280]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP130]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV281:%.*]] = zext i16 [[TMP131]] to i32
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV282:%.*]] = zext i16 [[TMP132]] to i32
// SIMD-ONLY0-NEXT:    [[CMP283:%.*]] = icmp eq i32 [[CONV281]], [[CONV282]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP283]], label [[COND_TRUE285:%.*]], label [[COND_FALSE287:%.*]]
// SIMD-ONLY0:       cond.true285:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV286:%.*]] = zext i16 [[TMP133]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289:%.*]]
// SIMD-ONLY0:       cond.false287:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV288:%.*]] = zext i16 [[TMP134]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END289]]
// SIMD-ONLY0:       cond.end289:
// SIMD-ONLY0-NEXT:    [[COND290:%.*]] = phi i32 [ [[CONV286]], [[COND_TRUE285]] ], [ [[CONV288]], [[COND_FALSE287]] ]
// SIMD-ONLY0-NEXT:    [[CONV291:%.*]] = trunc i32 [[COND290]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV291]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV292:%.*]] = zext i16 [[TMP135]] to i32
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV293:%.*]] = zext i16 [[TMP136]] to i32
// SIMD-ONLY0-NEXT:    [[CMP294:%.*]] = icmp sgt i32 [[CONV292]], [[CONV293]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP294]], label [[COND_TRUE296:%.*]], label [[COND_FALSE298:%.*]]
// SIMD-ONLY0:       cond.true296:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV297:%.*]] = zext i16 [[TMP137]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300:%.*]]
// SIMD-ONLY0:       cond.false298:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV299:%.*]] = zext i16 [[TMP138]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END300]]
// SIMD-ONLY0:       cond.end300:
// SIMD-ONLY0-NEXT:    [[COND301:%.*]] = phi i32 [ [[CONV297]], [[COND_TRUE296]] ], [ [[CONV299]], [[COND_FALSE298]] ]
// SIMD-ONLY0-NEXT:    [[CONV302:%.*]] = trunc i32 [[COND301]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV302]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP139]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV303:%.*]] = zext i16 [[TMP140]] to i32
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV304:%.*]] = zext i16 [[TMP141]] to i32
// SIMD-ONLY0-NEXT:    [[CMP305:%.*]] = icmp slt i32 [[CONV303]], [[CONV304]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP305]], label [[COND_TRUE307:%.*]], label [[COND_FALSE309:%.*]]
// SIMD-ONLY0:       cond.true307:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV308:%.*]] = zext i16 [[TMP142]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311:%.*]]
// SIMD-ONLY0:       cond.false309:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV310:%.*]] = zext i16 [[TMP143]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END311]]
// SIMD-ONLY0:       cond.end311:
// SIMD-ONLY0-NEXT:    [[COND312:%.*]] = phi i32 [ [[CONV308]], [[COND_TRUE307]] ], [ [[CONV310]], [[COND_FALSE309]] ]
// SIMD-ONLY0-NEXT:    [[CONV313:%.*]] = trunc i32 [[COND312]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV313]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP144]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV314:%.*]] = zext i16 [[TMP145]] to i32
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV315:%.*]] = zext i16 [[TMP146]] to i32
// SIMD-ONLY0-NEXT:    [[CMP316:%.*]] = icmp eq i32 [[CONV314]], [[CONV315]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP316]], label [[COND_TRUE318:%.*]], label [[COND_FALSE320:%.*]]
// SIMD-ONLY0:       cond.true318:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV319:%.*]] = zext i16 [[TMP147]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322:%.*]]
// SIMD-ONLY0:       cond.false320:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV321:%.*]] = zext i16 [[TMP148]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END322]]
// SIMD-ONLY0:       cond.end322:
// SIMD-ONLY0-NEXT:    [[COND323:%.*]] = phi i32 [ [[CONV319]], [[COND_TRUE318]] ], [ [[CONV321]], [[COND_FALSE320]] ]
// SIMD-ONLY0-NEXT:    [[CONV324:%.*]] = trunc i32 [[COND323]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV324]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP149]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP150]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV325:%.*]] = zext i16 [[TMP151]] to i32
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV326:%.*]] = zext i16 [[TMP152]] to i32
// SIMD-ONLY0-NEXT:    [[CMP327:%.*]] = icmp sgt i32 [[CONV325]], [[CONV326]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP327]], label [[COND_TRUE329:%.*]], label [[COND_FALSE331:%.*]]
// SIMD-ONLY0:       cond.true329:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV330:%.*]] = zext i16 [[TMP153]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333:%.*]]
// SIMD-ONLY0:       cond.false331:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV332:%.*]] = zext i16 [[TMP154]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END333]]
// SIMD-ONLY0:       cond.end333:
// SIMD-ONLY0-NEXT:    [[COND334:%.*]] = phi i32 [ [[CONV330]], [[COND_TRUE329]] ], [ [[CONV332]], [[COND_FALSE331]] ]
// SIMD-ONLY0-NEXT:    [[CONV335:%.*]] = trunc i32 [[COND334]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV335]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP155]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV336:%.*]] = zext i16 [[TMP156]] to i32
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV337:%.*]] = zext i16 [[TMP157]] to i32
// SIMD-ONLY0-NEXT:    [[CMP338:%.*]] = icmp slt i32 [[CONV336]], [[CONV337]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP338]], label [[COND_TRUE340:%.*]], label [[COND_FALSE342:%.*]]
// SIMD-ONLY0:       cond.true340:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV341:%.*]] = zext i16 [[TMP158]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344:%.*]]
// SIMD-ONLY0:       cond.false342:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV343:%.*]] = zext i16 [[TMP159]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END344]]
// SIMD-ONLY0:       cond.end344:
// SIMD-ONLY0-NEXT:    [[COND345:%.*]] = phi i32 [ [[CONV341]], [[COND_TRUE340]] ], [ [[CONV343]], [[COND_FALSE342]] ]
// SIMD-ONLY0-NEXT:    [[CONV346:%.*]] = trunc i32 [[COND345]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV346]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP160]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV347:%.*]] = zext i16 [[TMP161]] to i32
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV348:%.*]] = zext i16 [[TMP162]] to i32
// SIMD-ONLY0-NEXT:    [[CMP349:%.*]] = icmp eq i32 [[CONV347]], [[CONV348]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP349]], label [[COND_TRUE351:%.*]], label [[COND_FALSE353:%.*]]
// SIMD-ONLY0:       cond.true351:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV352:%.*]] = zext i16 [[TMP163]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355:%.*]]
// SIMD-ONLY0:       cond.false353:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV354:%.*]] = zext i16 [[TMP164]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END355]]
// SIMD-ONLY0:       cond.end355:
// SIMD-ONLY0-NEXT:    [[COND356:%.*]] = phi i32 [ [[CONV352]], [[COND_TRUE351]] ], [ [[CONV354]], [[COND_FALSE353]] ]
// SIMD-ONLY0-NEXT:    [[CONV357:%.*]] = trunc i32 [[COND356]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV357]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV358:%.*]] = zext i16 [[TMP165]] to i32
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV359:%.*]] = zext i16 [[TMP166]] to i32
// SIMD-ONLY0-NEXT:    [[CMP360:%.*]] = icmp sgt i32 [[CONV358]], [[CONV359]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP360]], label [[COND_TRUE362:%.*]], label [[COND_FALSE364:%.*]]
// SIMD-ONLY0:       cond.true362:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV363:%.*]] = zext i16 [[TMP167]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366:%.*]]
// SIMD-ONLY0:       cond.false364:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV365:%.*]] = zext i16 [[TMP168]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END366]]
// SIMD-ONLY0:       cond.end366:
// SIMD-ONLY0-NEXT:    [[COND367:%.*]] = phi i32 [ [[CONV363]], [[COND_TRUE362]] ], [ [[CONV365]], [[COND_FALSE364]] ]
// SIMD-ONLY0-NEXT:    [[CONV368:%.*]] = trunc i32 [[COND367]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV368]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP169]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV369:%.*]] = zext i16 [[TMP170]] to i32
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV370:%.*]] = zext i16 [[TMP171]] to i32
// SIMD-ONLY0-NEXT:    [[CMP371:%.*]] = icmp slt i32 [[CONV369]], [[CONV370]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP371]], label [[COND_TRUE373:%.*]], label [[COND_FALSE375:%.*]]
// SIMD-ONLY0:       cond.true373:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV374:%.*]] = zext i16 [[TMP172]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377:%.*]]
// SIMD-ONLY0:       cond.false375:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV376:%.*]] = zext i16 [[TMP173]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END377]]
// SIMD-ONLY0:       cond.end377:
// SIMD-ONLY0-NEXT:    [[COND378:%.*]] = phi i32 [ [[CONV374]], [[COND_TRUE373]] ], [ [[CONV376]], [[COND_FALSE375]] ]
// SIMD-ONLY0-NEXT:    [[CONV379:%.*]] = trunc i32 [[COND378]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV379]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP174]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV380:%.*]] = zext i16 [[TMP175]] to i32
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i16, ptr [[USE]], align 2
// SIMD-ONLY0-NEXT:    [[CONV381:%.*]] = zext i16 [[TMP176]] to i32
// SIMD-ONLY0-NEXT:    [[CMP382:%.*]] = icmp eq i32 [[CONV380]], [[CONV381]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP382]], label [[COND_TRUE384:%.*]], label [[COND_FALSE386:%.*]]
// SIMD-ONLY0:       cond.true384:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i16, ptr [[USD]], align 2
// SIMD-ONLY0-NEXT:    [[CONV385:%.*]] = zext i16 [[TMP177]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388:%.*]]
// SIMD-ONLY0:       cond.false386:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[CONV387:%.*]] = zext i16 [[TMP178]] to i32
// SIMD-ONLY0-NEXT:    br label [[COND_END388]]
// SIMD-ONLY0:       cond.end388:
// SIMD-ONLY0-NEXT:    [[COND389:%.*]] = phi i32 [ [[CONV385]], [[COND_TRUE384]] ], [ [[CONV387]], [[COND_FALSE386]] ]
// SIMD-ONLY0-NEXT:    [[CONV390:%.*]] = trunc i32 [[COND389]] to i16
// SIMD-ONLY0-NEXT:    store i16 [[CONV390]], ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i16, ptr [[USX]], align 2
// SIMD-ONLY0-NEXT:    store i16 [[TMP179]], ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i16, ptr [[USV]], align 2
// SIMD-ONLY0-NEXT:    ret i16 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @ixevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[IX:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[IV:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[IE:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[ID:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP0]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP5]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = icmp slt i32 [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi i32 [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND5]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP10]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = icmp eq i32 [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi i32 [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND10]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp sgt i32 [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND15]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP19]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = icmp slt i32 [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi i32 [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND20]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP24]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = icmp eq i32 [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi i32 [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND25]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP29]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP30]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = icmp sgt i32 [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi i32 [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND30]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP35]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = icmp slt i32 [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi i32 [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND35]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP40]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = icmp eq i32 [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi i32 [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND40]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp sgt i32 [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi i32 [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND45]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP49]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = icmp slt i32 [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi i32 [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND50]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP54]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp eq i32 [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi i32 [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND55]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP59]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP60]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = icmp sgt i32 [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi i32 [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND60]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP65]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = icmp slt i32 [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi i32 [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND65]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP70]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = icmp eq i32 [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND70]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp sgt i32 [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi i32 [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND75]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP79]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = icmp slt i32 [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi i32 [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND80]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP84]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = icmp eq i32 [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi i32 [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND85]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP89]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP90]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = icmp sgt i32 [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi i32 [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND90]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP95]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp slt i32 [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi i32 [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND95]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP100]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp eq i32 [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi i32 [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND100]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = icmp sgt i32 [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi i32 [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND105]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP109]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = icmp slt i32 [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi i32 [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND110]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP114]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = icmp eq i32 [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i32 [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND115]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP119]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP120]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = icmp sgt i32 [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi i32 [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND120]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP125]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = icmp slt i32 [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i32 [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND125]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP130]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = icmp eq i32 [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi i32 [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND130]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = icmp sgt i32 [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi i32 [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND135]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP139]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = icmp slt i32 [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi i32 [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND140]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP144]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i32 [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi i32 [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND145]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP149]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP150]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = icmp sgt i32 [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi i32 [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND150]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP155]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp slt i32 [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi i32 [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND155]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP160]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = icmp eq i32 [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi i32 [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND160]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = icmp sgt i32 [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi i32 [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND165]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP169]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = icmp slt i32 [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi i32 [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND170]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP174]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i32, ptr [[IE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp eq i32 [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i32, ptr [[ID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi i32 [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND175]], ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i32, ptr [[IX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP179]], ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i32, ptr [[IV]], align 4
// SIMD-ONLY0-NEXT:    ret i32 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @uixevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[UIX:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIV:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UIE:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[UID:%.*]] = alloca i32, align 4
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP0]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp ugt i32 [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i32 [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP5]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = icmp ult i32 [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi i32 [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND5]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP10]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = icmp eq i32 [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi i32 [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND10]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp ugt i32 [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i32 [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND15]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP19]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = icmp ult i32 [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi i32 [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND20]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP24]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = icmp eq i32 [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi i32 [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND25]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP29]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP30]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = icmp ugt i32 [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi i32 [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND30]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP35]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = icmp ult i32 [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi i32 [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND35]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP40]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = icmp eq i32 [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi i32 [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND40]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp ugt i32 [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi i32 [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND45]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP49]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = icmp ult i32 [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi i32 [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND50]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP54]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp eq i32 [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi i32 [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND55]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP59]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP60]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = icmp ugt i32 [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi i32 [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND60]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP65]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = icmp ult i32 [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi i32 [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND65]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP70]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = icmp eq i32 [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i32 [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND70]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp ugt i32 [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi i32 [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND75]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP79]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = icmp ult i32 [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi i32 [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND80]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP84]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = icmp eq i32 [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi i32 [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND85]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP89]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP90]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = icmp ugt i32 [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi i32 [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND90]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP95]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp ult i32 [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi i32 [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND95]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP100]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp eq i32 [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi i32 [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND100]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = icmp ugt i32 [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi i32 [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND105]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP109]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = icmp ult i32 [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi i32 [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND110]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP114]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = icmp eq i32 [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i32 [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND115]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP119]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP120]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = icmp ugt i32 [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi i32 [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND120]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP125]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = icmp ult i32 [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i32 [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND125]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP130]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = icmp eq i32 [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi i32 [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND130]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = icmp ugt i32 [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi i32 [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND135]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP139]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = icmp ult i32 [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi i32 [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND140]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP144]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i32 [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi i32 [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND145]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP149]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP150]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = icmp ugt i32 [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi i32 [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND150]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP155]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp ult i32 [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi i32 [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND155]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP160]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = icmp eq i32 [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi i32 [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND160]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = icmp ugt i32 [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi i32 [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND165]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP169]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = icmp ult i32 [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi i32 [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND170]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP174]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i32, ptr [[UIE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp eq i32 [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i32, ptr [[UID]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi i32 [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store i32 [[COND175]], ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i32, ptr [[UIX]], align 4
// SIMD-ONLY0-NEXT:    store i32 [[TMP179]], ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i32, ptr [[UIV]], align 4
// SIMD-ONLY0-NEXT:    ret i32 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @lxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[LX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP0]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i64 [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i64 [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP5]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = icmp slt i64 [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi i64 [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND5]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP10]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = icmp eq i64 [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi i64 [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND10]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp sgt i64 [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i64 [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND15]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP19]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = icmp slt i64 [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi i64 [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND20]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP24]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = icmp eq i64 [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi i64 [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND25]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP29]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP30]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = icmp sgt i64 [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi i64 [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND30]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP35]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = icmp slt i64 [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi i64 [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND35]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP40]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = icmp eq i64 [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi i64 [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND40]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp sgt i64 [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi i64 [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND45]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP49]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = icmp slt i64 [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi i64 [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND50]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP54]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp eq i64 [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi i64 [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND55]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP59]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP60]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = icmp sgt i64 [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi i64 [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND60]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP65]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = icmp slt i64 [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi i64 [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND65]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP70]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = icmp eq i64 [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i64 [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND70]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp sgt i64 [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi i64 [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND75]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP79]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = icmp slt i64 [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi i64 [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND80]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP84]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = icmp eq i64 [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi i64 [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND85]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP89]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP90]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = icmp sgt i64 [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi i64 [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND90]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP95]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp slt i64 [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi i64 [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND95]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP100]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp eq i64 [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi i64 [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND100]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = icmp sgt i64 [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi i64 [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND105]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP109]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = icmp slt i64 [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi i64 [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND110]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP114]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = icmp eq i64 [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i64 [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND115]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP119]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP120]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = icmp sgt i64 [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi i64 [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND120]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP125]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = icmp slt i64 [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i64 [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND125]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP130]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = icmp eq i64 [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi i64 [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND130]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = icmp sgt i64 [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi i64 [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND135]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP139]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = icmp slt i64 [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi i64 [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND140]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP144]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i64 [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi i64 [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND145]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP149]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP150]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = icmp sgt i64 [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi i64 [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND150]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP155]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp slt i64 [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi i64 [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND155]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP160]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = icmp eq i64 [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi i64 [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND160]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = icmp sgt i64 [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi i64 [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND165]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP169]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = icmp slt i64 [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi i64 [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND170]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP174]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i64, ptr [[LE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp eq i64 [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i64, ptr [[LD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi i64 [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND175]], ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i64, ptr [[LX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP179]], ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i64, ptr [[LV]], align 8
// SIMD-ONLY0-NEXT:    ret i64 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @ulxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[ULX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP0]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp ugt i64 [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i64 [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP5]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = icmp ult i64 [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi i64 [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND5]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP10]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = icmp eq i64 [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi i64 [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND10]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp ugt i64 [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i64 [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND15]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP19]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = icmp ult i64 [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi i64 [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND20]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP24]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = icmp eq i64 [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi i64 [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND25]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP29]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP30]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = icmp ugt i64 [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi i64 [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND30]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP35]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = icmp ult i64 [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi i64 [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND35]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP40]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = icmp eq i64 [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi i64 [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND40]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp ugt i64 [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi i64 [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND45]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP49]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = icmp ult i64 [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi i64 [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND50]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP54]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp eq i64 [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi i64 [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND55]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP59]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP60]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = icmp ugt i64 [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi i64 [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND60]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP65]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = icmp ult i64 [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi i64 [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND65]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP70]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = icmp eq i64 [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i64 [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND70]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp ugt i64 [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi i64 [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND75]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP79]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = icmp ult i64 [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi i64 [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND80]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP84]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = icmp eq i64 [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi i64 [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND85]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP89]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP90]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = icmp ugt i64 [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi i64 [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND90]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP95]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp ult i64 [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi i64 [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND95]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP100]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp eq i64 [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi i64 [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND100]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = icmp ugt i64 [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi i64 [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND105]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP109]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = icmp ult i64 [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi i64 [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND110]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP114]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = icmp eq i64 [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i64 [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND115]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP119]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP120]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = icmp ugt i64 [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi i64 [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND120]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP125]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = icmp ult i64 [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i64 [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND125]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP130]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = icmp eq i64 [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi i64 [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND130]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = icmp ugt i64 [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi i64 [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND135]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP139]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = icmp ult i64 [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi i64 [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND140]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP144]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i64 [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi i64 [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND145]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP149]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP150]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = icmp ugt i64 [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi i64 [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND150]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP155]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp ult i64 [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi i64 [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND155]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP160]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = icmp eq i64 [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi i64 [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND160]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = icmp ugt i64 [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi i64 [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND165]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP169]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = icmp ult i64 [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi i64 [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND170]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP174]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i64, ptr [[ULE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp eq i64 [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i64, ptr [[ULD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi i64 [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND175]], ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i64, ptr [[ULX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP179]], ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i64, ptr [[ULV]], align 8
// SIMD-ONLY0-NEXT:    ret i64 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @llxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[LLX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[LLD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP0]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp sgt i64 [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i64 [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP5]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = icmp slt i64 [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi i64 [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND5]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP10]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = icmp eq i64 [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi i64 [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND10]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp sgt i64 [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i64 [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND15]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP19]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = icmp slt i64 [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi i64 [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND20]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP24]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = icmp eq i64 [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi i64 [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND25]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP29]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP30]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = icmp sgt i64 [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi i64 [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND30]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP35]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = icmp slt i64 [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi i64 [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND35]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP40]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = icmp eq i64 [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi i64 [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND40]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp sgt i64 [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi i64 [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND45]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP49]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = icmp slt i64 [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi i64 [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND50]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP54]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp eq i64 [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi i64 [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND55]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP59]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP60]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = icmp sgt i64 [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi i64 [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND60]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP65]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = icmp slt i64 [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi i64 [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND65]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP70]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = icmp eq i64 [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i64 [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND70]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp sgt i64 [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi i64 [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND75]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP79]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = icmp slt i64 [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi i64 [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND80]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP84]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = icmp eq i64 [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi i64 [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND85]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP89]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP90]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = icmp sgt i64 [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi i64 [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND90]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP95]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp slt i64 [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi i64 [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND95]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP100]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp eq i64 [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi i64 [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND100]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = icmp sgt i64 [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi i64 [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND105]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP109]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = icmp slt i64 [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi i64 [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND110]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP114]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = icmp eq i64 [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i64 [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND115]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP119]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP120]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = icmp sgt i64 [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi i64 [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND120]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP125]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = icmp slt i64 [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i64 [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND125]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP130]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = icmp eq i64 [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi i64 [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND130]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = icmp sgt i64 [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi i64 [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND135]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP139]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = icmp slt i64 [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi i64 [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND140]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP144]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i64 [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi i64 [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND145]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP149]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP150]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = icmp sgt i64 [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi i64 [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND150]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP155]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp slt i64 [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi i64 [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND155]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP160]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = icmp eq i64 [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi i64 [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND160]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = icmp sgt i64 [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi i64 [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND165]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP169]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = icmp slt i64 [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi i64 [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND170]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP174]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i64, ptr [[LLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp eq i64 [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i64, ptr [[LLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi i64 [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND175]], ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i64, ptr [[LLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP179]], ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i64, ptr [[LLV]], align 8
// SIMD-ONLY0-NEXT:    ret i64 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @ullxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[ULLX:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLV:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLE:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[ULLD:%.*]] = alloca i64, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP0]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = icmp ugt i64 [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi i64 [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP5]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = icmp ult i64 [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi i64 [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND5]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP10]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = icmp eq i64 [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi i64 [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND10]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = icmp ugt i64 [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi i64 [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND15]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP19]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = icmp ult i64 [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi i64 [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND20]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP24]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = icmp eq i64 [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi i64 [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND25]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP29]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP30]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = icmp ugt i64 [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi i64 [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND30]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP35]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = icmp ult i64 [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi i64 [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND35]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP40]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = icmp eq i64 [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi i64 [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND40]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = icmp ugt i64 [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi i64 [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND45]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP49]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = icmp ult i64 [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi i64 [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND50]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP54]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = icmp eq i64 [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi i64 [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND55]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP59]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP60]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = icmp ugt i64 [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi i64 [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND60]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP65]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = icmp ult i64 [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi i64 [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND65]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP70]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = icmp eq i64 [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi i64 [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND70]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = icmp ugt i64 [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi i64 [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND75]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP79]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = icmp ult i64 [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi i64 [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND80]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP84]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = icmp eq i64 [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi i64 [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND85]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP89]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP90]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = icmp ugt i64 [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi i64 [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND90]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP95]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = icmp ult i64 [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi i64 [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND95]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP100]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = icmp eq i64 [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi i64 [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND100]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = icmp ugt i64 [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi i64 [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND105]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP109]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = icmp ult i64 [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi i64 [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND110]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP114]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = icmp eq i64 [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi i64 [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND115]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP119]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP120]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = icmp ugt i64 [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi i64 [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND120]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP125]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = icmp ult i64 [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi i64 [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND125]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP130]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = icmp eq i64 [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi i64 [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND130]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = icmp ugt i64 [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi i64 [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND135]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP139]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = icmp ult i64 [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi i64 [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND140]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP144]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = icmp eq i64 [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi i64 [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND145]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP149]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP150]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = icmp ugt i64 [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi i64 [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND150]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP155]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = icmp ult i64 [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi i64 [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND155]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP160]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = icmp eq i64 [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi i64 [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND160]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = icmp ugt i64 [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi i64 [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND165]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP169]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = icmp ult i64 [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi i64 [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND170]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP174]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load i64, ptr [[ULLE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = icmp eq i64 [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load i64, ptr [[ULLD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi i64 [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store i64 [[COND175]], ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load i64, ptr [[ULLX]], align 8
// SIMD-ONLY0-NEXT:    store i64 [[TMP179]], ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load i64, ptr [[ULLV]], align 8
// SIMD-ONLY0-NEXT:    ret i64 [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @fxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[FX:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FV:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FE:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[FD:%.*]] = alloca float, align 4
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP0]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = fcmp ogt float [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi float [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store float [[COND]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP5]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = fcmp olt float [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi float [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store float [[COND5]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP10]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = fcmp oeq float [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi float [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store float [[COND10]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = fcmp ogt float [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi float [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store float [[COND15]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP19]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = fcmp olt float [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi float [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store float [[COND20]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP24]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = fcmp oeq float [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi float [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store float [[COND25]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP29]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP30]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = fcmp ogt float [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi float [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store float [[COND30]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP35]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = fcmp olt float [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi float [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store float [[COND35]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP40]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = fcmp oeq float [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi float [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store float [[COND40]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = fcmp ogt float [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi float [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store float [[COND45]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP49]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = fcmp olt float [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi float [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store float [[COND50]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP54]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = fcmp oeq float [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi float [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store float [[COND55]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP59]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP60]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = fcmp ogt float [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi float [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store float [[COND60]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP65]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = fcmp olt float [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi float [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store float [[COND65]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP70]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = fcmp oeq float [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi float [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store float [[COND70]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = fcmp ogt float [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi float [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store float [[COND75]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP79]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = fcmp olt float [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi float [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store float [[COND80]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP84]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = fcmp oeq float [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi float [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store float [[COND85]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP89]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP90]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = fcmp ogt float [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi float [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store float [[COND90]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP95]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = fcmp olt float [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi float [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store float [[COND95]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP100]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = fcmp oeq float [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi float [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store float [[COND100]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = fcmp ogt float [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi float [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store float [[COND105]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP109]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = fcmp olt float [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi float [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store float [[COND110]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP114]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = fcmp oeq float [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi float [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store float [[COND115]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP119]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP120]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = fcmp ogt float [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi float [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store float [[COND120]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP125]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = fcmp olt float [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi float [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store float [[COND125]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP130]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = fcmp oeq float [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi float [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store float [[COND130]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = fcmp ogt float [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi float [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store float [[COND135]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP139]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = fcmp olt float [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi float [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store float [[COND140]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP144]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = fcmp oeq float [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi float [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store float [[COND145]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP149]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP150]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = fcmp ogt float [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi float [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store float [[COND150]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP155]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = fcmp olt float [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi float [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store float [[COND155]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP160]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = fcmp oeq float [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi float [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store float [[COND160]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = fcmp ogt float [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi float [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store float [[COND165]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP169]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = fcmp olt float [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi float [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store float [[COND170]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP174]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load float, ptr [[FE]], align 4
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = fcmp oeq float [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load float, ptr [[FD]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi float [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store float [[COND175]], ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load float, ptr [[FX]], align 4
// SIMD-ONLY0-NEXT:    store float [[TMP179]], ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load float, ptr [[FV]], align 4
// SIMD-ONLY0-NEXT:    ret float [[TMP180]]
//
//
// SIMD-ONLY0-LABEL: @dxevd(
// SIMD-ONLY0-NEXT:  entry:
// SIMD-ONLY0-NEXT:    [[DX:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DV:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DE:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[DD:%.*]] = alloca double, align 8
// SIMD-ONLY0-NEXT:    [[TMP0:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP0]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP1:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP2:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP:%.*]] = fcmp ogt double [[TMP1]], [[TMP2]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// SIMD-ONLY0:       cond.true:
// SIMD-ONLY0-NEXT:    [[TMP3:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END:%.*]]
// SIMD-ONLY0:       cond.false:
// SIMD-ONLY0-NEXT:    [[TMP4:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END]]
// SIMD-ONLY0:       cond.end:
// SIMD-ONLY0-NEXT:    [[COND:%.*]] = phi double [ [[TMP3]], [[COND_TRUE]] ], [ [[TMP4]], [[COND_FALSE]] ]
// SIMD-ONLY0-NEXT:    store double [[COND]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP5:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP5]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP6:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP7:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP1:%.*]] = fcmp olt double [[TMP6]], [[TMP7]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP1]], label [[COND_TRUE2:%.*]], label [[COND_FALSE3:%.*]]
// SIMD-ONLY0:       cond.true2:
// SIMD-ONLY0-NEXT:    [[TMP8:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4:%.*]]
// SIMD-ONLY0:       cond.false3:
// SIMD-ONLY0-NEXT:    [[TMP9:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END4]]
// SIMD-ONLY0:       cond.end4:
// SIMD-ONLY0-NEXT:    [[COND5:%.*]] = phi double [ [[TMP8]], [[COND_TRUE2]] ], [ [[TMP9]], [[COND_FALSE3]] ]
// SIMD-ONLY0-NEXT:    store double [[COND5]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP10:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP10]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP11:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP12:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP6:%.*]] = fcmp oeq double [[TMP11]], [[TMP12]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP6]], label [[COND_TRUE7:%.*]], label [[COND_FALSE8:%.*]]
// SIMD-ONLY0:       cond.true7:
// SIMD-ONLY0-NEXT:    [[TMP13:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9:%.*]]
// SIMD-ONLY0:       cond.false8:
// SIMD-ONLY0-NEXT:    [[TMP14:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END9]]
// SIMD-ONLY0:       cond.end9:
// SIMD-ONLY0-NEXT:    [[COND10:%.*]] = phi double [ [[TMP13]], [[COND_TRUE7]] ], [ [[TMP14]], [[COND_FALSE8]] ]
// SIMD-ONLY0-NEXT:    store double [[COND10]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP15:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP16:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP11:%.*]] = fcmp ogt double [[TMP15]], [[TMP16]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP11]], label [[COND_TRUE12:%.*]], label [[COND_FALSE13:%.*]]
// SIMD-ONLY0:       cond.true12:
// SIMD-ONLY0-NEXT:    [[TMP17:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14:%.*]]
// SIMD-ONLY0:       cond.false13:
// SIMD-ONLY0-NEXT:    [[TMP18:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END14]]
// SIMD-ONLY0:       cond.end14:
// SIMD-ONLY0-NEXT:    [[COND15:%.*]] = phi double [ [[TMP17]], [[COND_TRUE12]] ], [ [[TMP18]], [[COND_FALSE13]] ]
// SIMD-ONLY0-NEXT:    store double [[COND15]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP19:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP19]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP20:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP21:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP16:%.*]] = fcmp olt double [[TMP20]], [[TMP21]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP16]], label [[COND_TRUE17:%.*]], label [[COND_FALSE18:%.*]]
// SIMD-ONLY0:       cond.true17:
// SIMD-ONLY0-NEXT:    [[TMP22:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19:%.*]]
// SIMD-ONLY0:       cond.false18:
// SIMD-ONLY0-NEXT:    [[TMP23:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END19]]
// SIMD-ONLY0:       cond.end19:
// SIMD-ONLY0-NEXT:    [[COND20:%.*]] = phi double [ [[TMP22]], [[COND_TRUE17]] ], [ [[TMP23]], [[COND_FALSE18]] ]
// SIMD-ONLY0-NEXT:    store double [[COND20]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP24:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP24]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP25:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP26:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP21:%.*]] = fcmp oeq double [[TMP25]], [[TMP26]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP21]], label [[COND_TRUE22:%.*]], label [[COND_FALSE23:%.*]]
// SIMD-ONLY0:       cond.true22:
// SIMD-ONLY0-NEXT:    [[TMP27:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24:%.*]]
// SIMD-ONLY0:       cond.false23:
// SIMD-ONLY0-NEXT:    [[TMP28:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END24]]
// SIMD-ONLY0:       cond.end24:
// SIMD-ONLY0-NEXT:    [[COND25:%.*]] = phi double [ [[TMP27]], [[COND_TRUE22]] ], [ [[TMP28]], [[COND_FALSE23]] ]
// SIMD-ONLY0-NEXT:    store double [[COND25]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP29:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP29]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP30:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP30]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP31:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP32:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP26:%.*]] = fcmp ogt double [[TMP31]], [[TMP32]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP26]], label [[COND_TRUE27:%.*]], label [[COND_FALSE28:%.*]]
// SIMD-ONLY0:       cond.true27:
// SIMD-ONLY0-NEXT:    [[TMP33:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29:%.*]]
// SIMD-ONLY0:       cond.false28:
// SIMD-ONLY0-NEXT:    [[TMP34:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END29]]
// SIMD-ONLY0:       cond.end29:
// SIMD-ONLY0-NEXT:    [[COND30:%.*]] = phi double [ [[TMP33]], [[COND_TRUE27]] ], [ [[TMP34]], [[COND_FALSE28]] ]
// SIMD-ONLY0-NEXT:    store double [[COND30]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP35:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP35]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP36:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP37:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP31:%.*]] = fcmp olt double [[TMP36]], [[TMP37]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP31]], label [[COND_TRUE32:%.*]], label [[COND_FALSE33:%.*]]
// SIMD-ONLY0:       cond.true32:
// SIMD-ONLY0-NEXT:    [[TMP38:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34:%.*]]
// SIMD-ONLY0:       cond.false33:
// SIMD-ONLY0-NEXT:    [[TMP39:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END34]]
// SIMD-ONLY0:       cond.end34:
// SIMD-ONLY0-NEXT:    [[COND35:%.*]] = phi double [ [[TMP38]], [[COND_TRUE32]] ], [ [[TMP39]], [[COND_FALSE33]] ]
// SIMD-ONLY0-NEXT:    store double [[COND35]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP40:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP40]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP41:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP42:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP36:%.*]] = fcmp oeq double [[TMP41]], [[TMP42]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP36]], label [[COND_TRUE37:%.*]], label [[COND_FALSE38:%.*]]
// SIMD-ONLY0:       cond.true37:
// SIMD-ONLY0-NEXT:    [[TMP43:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39:%.*]]
// SIMD-ONLY0:       cond.false38:
// SIMD-ONLY0-NEXT:    [[TMP44:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END39]]
// SIMD-ONLY0:       cond.end39:
// SIMD-ONLY0-NEXT:    [[COND40:%.*]] = phi double [ [[TMP43]], [[COND_TRUE37]] ], [ [[TMP44]], [[COND_FALSE38]] ]
// SIMD-ONLY0-NEXT:    store double [[COND40]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP45:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP46:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP41:%.*]] = fcmp ogt double [[TMP45]], [[TMP46]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP41]], label [[COND_TRUE42:%.*]], label [[COND_FALSE43:%.*]]
// SIMD-ONLY0:       cond.true42:
// SIMD-ONLY0-NEXT:    [[TMP47:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44:%.*]]
// SIMD-ONLY0:       cond.false43:
// SIMD-ONLY0-NEXT:    [[TMP48:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END44]]
// SIMD-ONLY0:       cond.end44:
// SIMD-ONLY0-NEXT:    [[COND45:%.*]] = phi double [ [[TMP47]], [[COND_TRUE42]] ], [ [[TMP48]], [[COND_FALSE43]] ]
// SIMD-ONLY0-NEXT:    store double [[COND45]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP49:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP49]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP50:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP51:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP46:%.*]] = fcmp olt double [[TMP50]], [[TMP51]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP46]], label [[COND_TRUE47:%.*]], label [[COND_FALSE48:%.*]]
// SIMD-ONLY0:       cond.true47:
// SIMD-ONLY0-NEXT:    [[TMP52:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49:%.*]]
// SIMD-ONLY0:       cond.false48:
// SIMD-ONLY0-NEXT:    [[TMP53:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END49]]
// SIMD-ONLY0:       cond.end49:
// SIMD-ONLY0-NEXT:    [[COND50:%.*]] = phi double [ [[TMP52]], [[COND_TRUE47]] ], [ [[TMP53]], [[COND_FALSE48]] ]
// SIMD-ONLY0-NEXT:    store double [[COND50]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP54:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP54]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP55:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP56:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP51:%.*]] = fcmp oeq double [[TMP55]], [[TMP56]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP51]], label [[COND_TRUE52:%.*]], label [[COND_FALSE53:%.*]]
// SIMD-ONLY0:       cond.true52:
// SIMD-ONLY0-NEXT:    [[TMP57:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54:%.*]]
// SIMD-ONLY0:       cond.false53:
// SIMD-ONLY0-NEXT:    [[TMP58:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END54]]
// SIMD-ONLY0:       cond.end54:
// SIMD-ONLY0-NEXT:    [[COND55:%.*]] = phi double [ [[TMP57]], [[COND_TRUE52]] ], [ [[TMP58]], [[COND_FALSE53]] ]
// SIMD-ONLY0-NEXT:    store double [[COND55]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP59:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP59]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP60:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP60]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP61:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP62:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP56:%.*]] = fcmp ogt double [[TMP61]], [[TMP62]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP56]], label [[COND_TRUE57:%.*]], label [[COND_FALSE58:%.*]]
// SIMD-ONLY0:       cond.true57:
// SIMD-ONLY0-NEXT:    [[TMP63:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59:%.*]]
// SIMD-ONLY0:       cond.false58:
// SIMD-ONLY0-NEXT:    [[TMP64:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END59]]
// SIMD-ONLY0:       cond.end59:
// SIMD-ONLY0-NEXT:    [[COND60:%.*]] = phi double [ [[TMP63]], [[COND_TRUE57]] ], [ [[TMP64]], [[COND_FALSE58]] ]
// SIMD-ONLY0-NEXT:    store double [[COND60]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP65:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP65]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP66:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP67:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP61:%.*]] = fcmp olt double [[TMP66]], [[TMP67]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP61]], label [[COND_TRUE62:%.*]], label [[COND_FALSE63:%.*]]
// SIMD-ONLY0:       cond.true62:
// SIMD-ONLY0-NEXT:    [[TMP68:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64:%.*]]
// SIMD-ONLY0:       cond.false63:
// SIMD-ONLY0-NEXT:    [[TMP69:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END64]]
// SIMD-ONLY0:       cond.end64:
// SIMD-ONLY0-NEXT:    [[COND65:%.*]] = phi double [ [[TMP68]], [[COND_TRUE62]] ], [ [[TMP69]], [[COND_FALSE63]] ]
// SIMD-ONLY0-NEXT:    store double [[COND65]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP70:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP70]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP71:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP72:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP66:%.*]] = fcmp oeq double [[TMP71]], [[TMP72]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP66]], label [[COND_TRUE67:%.*]], label [[COND_FALSE68:%.*]]
// SIMD-ONLY0:       cond.true67:
// SIMD-ONLY0-NEXT:    [[TMP73:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69:%.*]]
// SIMD-ONLY0:       cond.false68:
// SIMD-ONLY0-NEXT:    [[TMP74:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END69]]
// SIMD-ONLY0:       cond.end69:
// SIMD-ONLY0-NEXT:    [[COND70:%.*]] = phi double [ [[TMP73]], [[COND_TRUE67]] ], [ [[TMP74]], [[COND_FALSE68]] ]
// SIMD-ONLY0-NEXT:    store double [[COND70]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP75:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP76:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP71:%.*]] = fcmp ogt double [[TMP75]], [[TMP76]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP71]], label [[COND_TRUE72:%.*]], label [[COND_FALSE73:%.*]]
// SIMD-ONLY0:       cond.true72:
// SIMD-ONLY0-NEXT:    [[TMP77:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74:%.*]]
// SIMD-ONLY0:       cond.false73:
// SIMD-ONLY0-NEXT:    [[TMP78:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END74]]
// SIMD-ONLY0:       cond.end74:
// SIMD-ONLY0-NEXT:    [[COND75:%.*]] = phi double [ [[TMP77]], [[COND_TRUE72]] ], [ [[TMP78]], [[COND_FALSE73]] ]
// SIMD-ONLY0-NEXT:    store double [[COND75]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP79:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP79]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP80:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP81:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP76:%.*]] = fcmp olt double [[TMP80]], [[TMP81]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP76]], label [[COND_TRUE77:%.*]], label [[COND_FALSE78:%.*]]
// SIMD-ONLY0:       cond.true77:
// SIMD-ONLY0-NEXT:    [[TMP82:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79:%.*]]
// SIMD-ONLY0:       cond.false78:
// SIMD-ONLY0-NEXT:    [[TMP83:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END79]]
// SIMD-ONLY0:       cond.end79:
// SIMD-ONLY0-NEXT:    [[COND80:%.*]] = phi double [ [[TMP82]], [[COND_TRUE77]] ], [ [[TMP83]], [[COND_FALSE78]] ]
// SIMD-ONLY0-NEXT:    store double [[COND80]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP84:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP84]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP85:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP86:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP81:%.*]] = fcmp oeq double [[TMP85]], [[TMP86]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP81]], label [[COND_TRUE82:%.*]], label [[COND_FALSE83:%.*]]
// SIMD-ONLY0:       cond.true82:
// SIMD-ONLY0-NEXT:    [[TMP87:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84:%.*]]
// SIMD-ONLY0:       cond.false83:
// SIMD-ONLY0-NEXT:    [[TMP88:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END84]]
// SIMD-ONLY0:       cond.end84:
// SIMD-ONLY0-NEXT:    [[COND85:%.*]] = phi double [ [[TMP87]], [[COND_TRUE82]] ], [ [[TMP88]], [[COND_FALSE83]] ]
// SIMD-ONLY0-NEXT:    store double [[COND85]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP89:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP89]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP90:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP90]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP91:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP92:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP86:%.*]] = fcmp ogt double [[TMP91]], [[TMP92]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP86]], label [[COND_TRUE87:%.*]], label [[COND_FALSE88:%.*]]
// SIMD-ONLY0:       cond.true87:
// SIMD-ONLY0-NEXT:    [[TMP93:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89:%.*]]
// SIMD-ONLY0:       cond.false88:
// SIMD-ONLY0-NEXT:    [[TMP94:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END89]]
// SIMD-ONLY0:       cond.end89:
// SIMD-ONLY0-NEXT:    [[COND90:%.*]] = phi double [ [[TMP93]], [[COND_TRUE87]] ], [ [[TMP94]], [[COND_FALSE88]] ]
// SIMD-ONLY0-NEXT:    store double [[COND90]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP95:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP95]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP96:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP97:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP91:%.*]] = fcmp olt double [[TMP96]], [[TMP97]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP91]], label [[COND_TRUE92:%.*]], label [[COND_FALSE93:%.*]]
// SIMD-ONLY0:       cond.true92:
// SIMD-ONLY0-NEXT:    [[TMP98:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94:%.*]]
// SIMD-ONLY0:       cond.false93:
// SIMD-ONLY0-NEXT:    [[TMP99:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END94]]
// SIMD-ONLY0:       cond.end94:
// SIMD-ONLY0-NEXT:    [[COND95:%.*]] = phi double [ [[TMP98]], [[COND_TRUE92]] ], [ [[TMP99]], [[COND_FALSE93]] ]
// SIMD-ONLY0-NEXT:    store double [[COND95]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP100:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP100]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP101:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP102:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP96:%.*]] = fcmp oeq double [[TMP101]], [[TMP102]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP96]], label [[COND_TRUE97:%.*]], label [[COND_FALSE98:%.*]]
// SIMD-ONLY0:       cond.true97:
// SIMD-ONLY0-NEXT:    [[TMP103:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99:%.*]]
// SIMD-ONLY0:       cond.false98:
// SIMD-ONLY0-NEXT:    [[TMP104:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END99]]
// SIMD-ONLY0:       cond.end99:
// SIMD-ONLY0-NEXT:    [[COND100:%.*]] = phi double [ [[TMP103]], [[COND_TRUE97]] ], [ [[TMP104]], [[COND_FALSE98]] ]
// SIMD-ONLY0-NEXT:    store double [[COND100]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP105:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP106:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP101:%.*]] = fcmp ogt double [[TMP105]], [[TMP106]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP101]], label [[COND_TRUE102:%.*]], label [[COND_FALSE103:%.*]]
// SIMD-ONLY0:       cond.true102:
// SIMD-ONLY0-NEXT:    [[TMP107:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104:%.*]]
// SIMD-ONLY0:       cond.false103:
// SIMD-ONLY0-NEXT:    [[TMP108:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END104]]
// SIMD-ONLY0:       cond.end104:
// SIMD-ONLY0-NEXT:    [[COND105:%.*]] = phi double [ [[TMP107]], [[COND_TRUE102]] ], [ [[TMP108]], [[COND_FALSE103]] ]
// SIMD-ONLY0-NEXT:    store double [[COND105]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP109:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP109]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP110:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP111:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP106:%.*]] = fcmp olt double [[TMP110]], [[TMP111]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP106]], label [[COND_TRUE107:%.*]], label [[COND_FALSE108:%.*]]
// SIMD-ONLY0:       cond.true107:
// SIMD-ONLY0-NEXT:    [[TMP112:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109:%.*]]
// SIMD-ONLY0:       cond.false108:
// SIMD-ONLY0-NEXT:    [[TMP113:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END109]]
// SIMD-ONLY0:       cond.end109:
// SIMD-ONLY0-NEXT:    [[COND110:%.*]] = phi double [ [[TMP112]], [[COND_TRUE107]] ], [ [[TMP113]], [[COND_FALSE108]] ]
// SIMD-ONLY0-NEXT:    store double [[COND110]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP114:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP114]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP115:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP116:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP111:%.*]] = fcmp oeq double [[TMP115]], [[TMP116]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP111]], label [[COND_TRUE112:%.*]], label [[COND_FALSE113:%.*]]
// SIMD-ONLY0:       cond.true112:
// SIMD-ONLY0-NEXT:    [[TMP117:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114:%.*]]
// SIMD-ONLY0:       cond.false113:
// SIMD-ONLY0-NEXT:    [[TMP118:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END114]]
// SIMD-ONLY0:       cond.end114:
// SIMD-ONLY0-NEXT:    [[COND115:%.*]] = phi double [ [[TMP117]], [[COND_TRUE112]] ], [ [[TMP118]], [[COND_FALSE113]] ]
// SIMD-ONLY0-NEXT:    store double [[COND115]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP119:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP119]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP120:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP120]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP121:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP122:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP116:%.*]] = fcmp ogt double [[TMP121]], [[TMP122]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP116]], label [[COND_TRUE117:%.*]], label [[COND_FALSE118:%.*]]
// SIMD-ONLY0:       cond.true117:
// SIMD-ONLY0-NEXT:    [[TMP123:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119:%.*]]
// SIMD-ONLY0:       cond.false118:
// SIMD-ONLY0-NEXT:    [[TMP124:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END119]]
// SIMD-ONLY0:       cond.end119:
// SIMD-ONLY0-NEXT:    [[COND120:%.*]] = phi double [ [[TMP123]], [[COND_TRUE117]] ], [ [[TMP124]], [[COND_FALSE118]] ]
// SIMD-ONLY0-NEXT:    store double [[COND120]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP125:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP125]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP126:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP127:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP121:%.*]] = fcmp olt double [[TMP126]], [[TMP127]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP121]], label [[COND_TRUE122:%.*]], label [[COND_FALSE123:%.*]]
// SIMD-ONLY0:       cond.true122:
// SIMD-ONLY0-NEXT:    [[TMP128:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124:%.*]]
// SIMD-ONLY0:       cond.false123:
// SIMD-ONLY0-NEXT:    [[TMP129:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END124]]
// SIMD-ONLY0:       cond.end124:
// SIMD-ONLY0-NEXT:    [[COND125:%.*]] = phi double [ [[TMP128]], [[COND_TRUE122]] ], [ [[TMP129]], [[COND_FALSE123]] ]
// SIMD-ONLY0-NEXT:    store double [[COND125]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP130:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP130]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP131:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP132:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP126:%.*]] = fcmp oeq double [[TMP131]], [[TMP132]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP126]], label [[COND_TRUE127:%.*]], label [[COND_FALSE128:%.*]]
// SIMD-ONLY0:       cond.true127:
// SIMD-ONLY0-NEXT:    [[TMP133:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129:%.*]]
// SIMD-ONLY0:       cond.false128:
// SIMD-ONLY0-NEXT:    [[TMP134:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END129]]
// SIMD-ONLY0:       cond.end129:
// SIMD-ONLY0-NEXT:    [[COND130:%.*]] = phi double [ [[TMP133]], [[COND_TRUE127]] ], [ [[TMP134]], [[COND_FALSE128]] ]
// SIMD-ONLY0-NEXT:    store double [[COND130]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP135:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP136:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP131:%.*]] = fcmp ogt double [[TMP135]], [[TMP136]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP131]], label [[COND_TRUE132:%.*]], label [[COND_FALSE133:%.*]]
// SIMD-ONLY0:       cond.true132:
// SIMD-ONLY0-NEXT:    [[TMP137:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134:%.*]]
// SIMD-ONLY0:       cond.false133:
// SIMD-ONLY0-NEXT:    [[TMP138:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END134]]
// SIMD-ONLY0:       cond.end134:
// SIMD-ONLY0-NEXT:    [[COND135:%.*]] = phi double [ [[TMP137]], [[COND_TRUE132]] ], [ [[TMP138]], [[COND_FALSE133]] ]
// SIMD-ONLY0-NEXT:    store double [[COND135]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP139:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP139]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP140:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP141:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP136:%.*]] = fcmp olt double [[TMP140]], [[TMP141]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP136]], label [[COND_TRUE137:%.*]], label [[COND_FALSE138:%.*]]
// SIMD-ONLY0:       cond.true137:
// SIMD-ONLY0-NEXT:    [[TMP142:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139:%.*]]
// SIMD-ONLY0:       cond.false138:
// SIMD-ONLY0-NEXT:    [[TMP143:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END139]]
// SIMD-ONLY0:       cond.end139:
// SIMD-ONLY0-NEXT:    [[COND140:%.*]] = phi double [ [[TMP142]], [[COND_TRUE137]] ], [ [[TMP143]], [[COND_FALSE138]] ]
// SIMD-ONLY0-NEXT:    store double [[COND140]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP144:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP144]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP145:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP146:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP141:%.*]] = fcmp oeq double [[TMP145]], [[TMP146]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP141]], label [[COND_TRUE142:%.*]], label [[COND_FALSE143:%.*]]
// SIMD-ONLY0:       cond.true142:
// SIMD-ONLY0-NEXT:    [[TMP147:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144:%.*]]
// SIMD-ONLY0:       cond.false143:
// SIMD-ONLY0-NEXT:    [[TMP148:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END144]]
// SIMD-ONLY0:       cond.end144:
// SIMD-ONLY0-NEXT:    [[COND145:%.*]] = phi double [ [[TMP147]], [[COND_TRUE142]] ], [ [[TMP148]], [[COND_FALSE143]] ]
// SIMD-ONLY0-NEXT:    store double [[COND145]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP149:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP149]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP150:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP150]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP151:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP152:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP146:%.*]] = fcmp ogt double [[TMP151]], [[TMP152]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP146]], label [[COND_TRUE147:%.*]], label [[COND_FALSE148:%.*]]
// SIMD-ONLY0:       cond.true147:
// SIMD-ONLY0-NEXT:    [[TMP153:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149:%.*]]
// SIMD-ONLY0:       cond.false148:
// SIMD-ONLY0-NEXT:    [[TMP154:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END149]]
// SIMD-ONLY0:       cond.end149:
// SIMD-ONLY0-NEXT:    [[COND150:%.*]] = phi double [ [[TMP153]], [[COND_TRUE147]] ], [ [[TMP154]], [[COND_FALSE148]] ]
// SIMD-ONLY0-NEXT:    store double [[COND150]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP155:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP155]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP156:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP157:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP151:%.*]] = fcmp olt double [[TMP156]], [[TMP157]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP151]], label [[COND_TRUE152:%.*]], label [[COND_FALSE153:%.*]]
// SIMD-ONLY0:       cond.true152:
// SIMD-ONLY0-NEXT:    [[TMP158:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154:%.*]]
// SIMD-ONLY0:       cond.false153:
// SIMD-ONLY0-NEXT:    [[TMP159:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END154]]
// SIMD-ONLY0:       cond.end154:
// SIMD-ONLY0-NEXT:    [[COND155:%.*]] = phi double [ [[TMP158]], [[COND_TRUE152]] ], [ [[TMP159]], [[COND_FALSE153]] ]
// SIMD-ONLY0-NEXT:    store double [[COND155]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP160:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP160]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP161:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP162:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP156:%.*]] = fcmp oeq double [[TMP161]], [[TMP162]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP156]], label [[COND_TRUE157:%.*]], label [[COND_FALSE158:%.*]]
// SIMD-ONLY0:       cond.true157:
// SIMD-ONLY0-NEXT:    [[TMP163:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159:%.*]]
// SIMD-ONLY0:       cond.false158:
// SIMD-ONLY0-NEXT:    [[TMP164:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END159]]
// SIMD-ONLY0:       cond.end159:
// SIMD-ONLY0-NEXT:    [[COND160:%.*]] = phi double [ [[TMP163]], [[COND_TRUE157]] ], [ [[TMP164]], [[COND_FALSE158]] ]
// SIMD-ONLY0-NEXT:    store double [[COND160]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP165:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP166:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP161:%.*]] = fcmp ogt double [[TMP165]], [[TMP166]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP161]], label [[COND_TRUE162:%.*]], label [[COND_FALSE163:%.*]]
// SIMD-ONLY0:       cond.true162:
// SIMD-ONLY0-NEXT:    [[TMP167:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164:%.*]]
// SIMD-ONLY0:       cond.false163:
// SIMD-ONLY0-NEXT:    [[TMP168:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END164]]
// SIMD-ONLY0:       cond.end164:
// SIMD-ONLY0-NEXT:    [[COND165:%.*]] = phi double [ [[TMP167]], [[COND_TRUE162]] ], [ [[TMP168]], [[COND_FALSE163]] ]
// SIMD-ONLY0-NEXT:    store double [[COND165]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP169:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP169]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP170:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP171:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP166:%.*]] = fcmp olt double [[TMP170]], [[TMP171]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP166]], label [[COND_TRUE167:%.*]], label [[COND_FALSE168:%.*]]
// SIMD-ONLY0:       cond.true167:
// SIMD-ONLY0-NEXT:    [[TMP172:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169:%.*]]
// SIMD-ONLY0:       cond.false168:
// SIMD-ONLY0-NEXT:    [[TMP173:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END169]]
// SIMD-ONLY0:       cond.end169:
// SIMD-ONLY0-NEXT:    [[COND170:%.*]] = phi double [ [[TMP172]], [[COND_TRUE167]] ], [ [[TMP173]], [[COND_FALSE168]] ]
// SIMD-ONLY0-NEXT:    store double [[COND170]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP174:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP174]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP175:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP176:%.*]] = load double, ptr [[DE]], align 8
// SIMD-ONLY0-NEXT:    [[CMP171:%.*]] = fcmp oeq double [[TMP175]], [[TMP176]]
// SIMD-ONLY0-NEXT:    br i1 [[CMP171]], label [[COND_TRUE172:%.*]], label [[COND_FALSE173:%.*]]
// SIMD-ONLY0:       cond.true172:
// SIMD-ONLY0-NEXT:    [[TMP177:%.*]] = load double, ptr [[DD]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174:%.*]]
// SIMD-ONLY0:       cond.false173:
// SIMD-ONLY0-NEXT:    [[TMP178:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    br label [[COND_END174]]
// SIMD-ONLY0:       cond.end174:
// SIMD-ONLY0-NEXT:    [[COND175:%.*]] = phi double [ [[TMP177]], [[COND_TRUE172]] ], [ [[TMP178]], [[COND_FALSE173]] ]
// SIMD-ONLY0-NEXT:    store double [[COND175]], ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    [[TMP179:%.*]] = load double, ptr [[DX]], align 8
// SIMD-ONLY0-NEXT:    store double [[TMP179]], ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    [[TMP180:%.*]] = load double, ptr [[DV]], align 8
// SIMD-ONLY0-NEXT:    ret double [[TMP180]]
//
